【问题标题】:How to export selections made in tkinter Combobox to Excel or text File?如何将 tkinter Combobox 中的选择导出到 Excel 或文本文件?
【发布时间】:2021-08-08 20:28:26
【问题描述】:

我正在开发一个程序,该程序将用于在商店之间内部订购零件。目前我的 GUI 运行良好,代码没有错误。

我想在 GUI 底部有一个按钮,会显示发送,它会读取所做的选择,然后将这些选择导出到物流部门可以读取的文件中。我已经搜索了互联网,但似乎无法为 python 找到这样的东西。

我希望将选择导出到 Excel 电子表格中,但文本文件也可以,如果它可以编码以便于阅读。

由于我在上一篇文章中收到了不好的评论,我将发布两种选择框的代码,我有。粘贴到 .py 文件中的代码将打开一个类似的 GUI。

from tkinter import *
from tkinter.ttk import *
master = Tk()
master.geometry("400x400")

def openiPhone5():
    iPhone5 = Toplevel(master)
    iPhone5.geometry("800x800")
    Label(iPhone5,
          text="iPhone 5").grid()
    #Variabel til iPhone 5 Farver
    iPhone5Colors =('Sort', 'Hvid')

    #PARTS###

    #OrginalSkærm
    OGscreen = Combobox(iPhone5)
    OGscreenColor = Combobox(iPhone5)
    OGscreen['values'] = (1, 2, 3, 4, 5, "Text")
    OGscreenColor['values'] = iPhone5Colors
    OGscreen.current(0)  # set the selected item
    OGscreenColor.grid(column=3, row=7)
        #CUSTOM
    CustomAmount = Combobox(iPhone5)
    CustomTEXT = Combobox(iPhone5)
    CustomTEXT['text'] = (1, "Text")
    CustomAmount['values'] = (1, 2, 3, 4, 5, "Text")
    CustomAmount.current(0)  # set the selected item
    CustomAmount.grid(column=3, row=18)
    CustomTEXT.grid(column=3, row=17)
    Custom_lbl = Label(iPhone5,
                       text="Custom")
    Custom_lbl.grid(column=1, row=17)

def openNewWindow1():
    # Toplevel object which will
    # be treated as a new window
    newWindow1 = Toplevel(master)

    # sets the title of the
    # Toplevel widget
    newWindow1.title("Apple")

    # sets the geometry of toplevel
    newWindow1.geometry("800x800")

    # A Label widget to show in toplevel
    Label(newWindow1,
          text="iPhones").grid()
    btn = Button(newWindow1,
                 text="iPhone 5",
                 command=openiPhone5)

【问题讨论】:

  • 您知道如何从Combobox 中获取用户选择的值吗?如果是这样,这个问题就不需要tkinter 标签了。
  • @TheLizzard 不,我不知道,很遗憾。我是这个网站的新手,所以我不知道要使用哪些标签,抱歉。
  • 别担心。只为未来:标签用于向某些人寻求帮助。例如,我回答带有tkinter 标记的问题,但我真的不知道 excel 是如何工作的。如果您对问题使用正确的标签,您更有可能从具有该领域知识的人那里得到更好的答案。
  • 您已经解释了您正在创建的内容,但您还没有提出任何问题。您正在努力解决问题的哪一部分?
  • " 我没有要求任何人为我编写代码,我觉得你只是出于某种原因在追我," - 我不是在追你,只是你的问题只是一组要求。您没有表现出任何尝试自己解决此问题的努力。见How much research effort is expected of Stack Overflow users?。我只是想让您更具体地了解您需要哪种类型的帮助,因为从问题本身来看这根本不明显。

标签: python excel user-interface tkinter combobox


【解决方案1】:

最简单的方法是首先将一个变量与每个组合框相关联。然后,您可以将这些变量存储在列表或字典中。要获取数据,只需遍历列表或字典并在每个变量上调用 get

这是一个非常简单的示例,它创建了 10 个带有关联变量的组合框:

combo_vars = []
for i in range(10):
    var = tk.StringVar(root, value=0)
    combo_vars.append(var)
    label = tk.Label(form, text=f"Value {i+1}:")
    combo = ttk.Combobox(form, textvariable=var, width=20, values=list(range(5)))

    label.grid(row=i, column=0, sticky="e")
    combo.grid(row=i, column=1, sticky="w")

例如,假设您有一个名为combo_vars 的变量,其中包含StringVar 的实例,例如在前面的示例中,您可以获取所有值并在一个简单的循环中将它们打印出来。使用列表推导可以更简洁地执行此操作,但我使用更详细的方法使其更易于理解。

values = []
for var in combo_vars:
    value = var.get()
    values.append(value)

这样,values 就有一个值列表。然后,您可以对该列表做任何您想做的事情:将它们转换为逗号分隔的列表、将它们写入数据库、将它们转换为 json、将它们保存到 excel 文件,或者您需要做的任何事情。

例如,要将逗号分隔的列表写入文件,您可以像这样使用csv module

import csv
...
with open("data.csv", "w") as csvfile:
    writer = csv.writer(csvfile, values)
    writer.writerow(values)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多