首页 > 解决方案 > 我无法为 tkinter optionmenu 输入导出 csv 文件

问题描述

我可以使用选项菜单为条目导出 csv。有没有可能的方法来导出它?

这是我的代码>>

from tkinter import *
import csv

def save():
    with open('output.txt', 'w') as out:
        for label, entry, optionmenu`enter code here` in mywidget:
            out.write(label['text']+" "+entry.get()+'\n')

if __name__ == '__main__':

    user = Tk()
    myLabel1 = Label(user, text="FIS_PRA_USERS")

    myLabel2 = Label(user, text="FIS_ID")
    FIS_ID = StringVar()
    entry_box1 = Entry(user, textvariable=FIS_ID, width=70)
    entry_box1.insert(0, "PRA")

    myLabel3 = Label(user, text="FIS_User_Name")
    FIS_User_Name = StringVar()
    entry_box2 = Entry(user, textvariable=FIS_User_Name, width=70)
    entry_box2.insert(0, "User Full Name")

    myLabel4 = Label(user, text="FIS_User_Email")
    FIS_User_Email = StringVar()
    entry_box3 = Entry(user, textvariable=FIS_User_Email, width=70)
    entry_box3.insert(0, "boss@allnetworks.com")

    myLabel5 = Label(user, text="FIS_User_Password")
    FIS_User_Password = StringVar()
    entry_box4 = Entry(user, textvariable=FIS_User_Password, width=70)
    entry_box4.insert(0, "xxxxxxxx")

    myLabel6 = Label(user, text="FIS_User_Type")
    FIS_User_Type = StringVar()
    clicked = StringVar()
    clicked.set("Admin")
    drop1 = OptionMenu(user, clicked, "Admin", "Supervisor", "User", "ReadOnly")
    utype = clicked.get()

    myLabel7 = Label(user, text="FIS_User_Fist_Seen")
    FIS_User_First_Seen = StringVar()
    entry_box5 = Entry(user,textvariable=FIS_User_First_Seen,state = 'normal', width=70)
    entry_box5.insert(0, "YYYY/MM/DD-HH-SS")

    myLabel8 = Label(user, text="FIS_User_Last_Seen")
    FIS_User_Last_Seen = StringVar()
    entry_box6 = Entry(user,textvariable=FIS_User_Last_Seen, width=70)
    entry_box6.insert(0, "YYYY/MM/DD-HH-SS")
    button1 = Button(user, text = "Save", command = save)
    button2 = Button(user, text = "Edit")
    button3 = Button(user, text = "Delete")
    button4 = Button(user, text = "Export")

    #tkinter display setting
    myLabel1.grid(row=0, column=2)
    myLabel2.grid(row=2, column=0)
    entry_box1.grid(row=2, column=2)
    myLabel3.grid(row=3, column =0)
    entry_box2.grid(row=3, column =2)
    myLabel4.grid(row=4, column =0)
    entry_box3.grid(row=4, column=2)
    myLabel5.grid(row=5, column=0)
    entry_box4.grid(row=5, column=2)
    myLabel6.grid(row=6, column=0)
    drop1.grid(row=6, column=2)
    myLabel7.grid(row=7, column=0)
    entry_box5.grid(row=7, column=2)
    myLabel8.grid(row=8, column=0)
    entry_box6.grid(row=8, column=2)
    button1.grid(row=9, column=3)
    button2.grid(row=9, column=4)
    button3.grid(row=9, column=5)
    button4.grid(row=9, column=6)
   

    mywidget = [(myLabel2, entry_box1),(myLabel3, entry_box2), (myLabel4, entry_box3), (myLabel5, entry_box4),(myLabel6, utype)]
    user.mainloop()

标签: pythontkinterexport-to-csv

解决方案


您不应该在 中使用utype(这是一个空字符串)mywidgetclicked而是使用:

def save():
    with open('output.txt', 'w') as out:
        for label, entry in mywidget:
            out.write(label['text']+" "+entry.get()+'\n')

...

mywidget = [(myLabel2, entry_box1), (myLabel3, entry_box2), (myLabel4, entry_box3),
            (myLabel5, entry_box4), (myLabel6, clicked)] # use clicked instead of utype

推荐阅读