如何将在 tkinter Combobox 中所做的选择导出到 Excel 或文本文件?

How to export selections made in tkinter Combobox to Excel or text File?

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

我想在 GUI 的底部有一个按钮,上面写着发送,它会读取所做的选择,然后将它们导出到后勤部门可以读取的文件中。我在网上搜索过,但似乎找不到 python.

这样的东西

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

由于我在最后 post 收到了不好的评论,我将 post 为两种选择框编写代码,我有。粘贴到 .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)

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