【问题标题】:Unable to store entered Input in Multiple Window in Tkinter无法在 Tkinter 的多个窗口中存储输入的输入
【发布时间】:2022-08-16 22:12:53
【问题描述】:

我创建了多个窗口,我想打印和存储在 TopLevel 窗口之一中输入的数据,但它无法存储和打印数据。当我在没有多个窗口的情况下做同样的事情时,我能够做到这一点。这里有什么问题,让我知道。

from tkinter import *


def Read():
    name = namevalue.get()
    print(\'Name:\',name)
    with open(\'attendance_data/detail.csv\',\'a+\') as f:
        f.write(name)

def New():
    top1 = Toplevel()

    top1.geometry(\'500x500\')
    top1.resizable(False,False)
    top1.title(\'Existing Employee Details\')
    
    l1 = Label(top1,text=\'New Employee Registeration\',font=\'comicsans 14 bold\',padx=10).grid(row = 0,column=3,pady=50)

    name = Label(top1,text=\'Name\',padx=20)
    name.grid(row=1,column=2)
    namevalue = StringVar()
    nameEntry = Entry(top1,textvariable=namevalue).grid(row=1,column=3,pady=25)
    Button(top1,text=\'Submit\',command=Read).grid(row=4,column=3,pady=25)  # command

    top1.mainloop()  

root = Tk()

root.geometry(\'500x500\')
root.resizable(False,False)
root.title(\'Main Window\')

l2 = Label(root,text=\'New Employee Registeration\',font=\'comicsans 14 bold\',padx=10).grid(row = 0,column=2,pady=50,padx=50)
b1 = Button(text=\'New Employee\',bg=\'black\',fg=\'red\',font=\'comicsansms 12 bold\',command=New).grid(row=10,column=2,pady=50)
b2 = Button(text=\'Existing Employee\',bg=\'black\',fg=\'red\',font= \'comicsansms 12 bold\').grid(row = 11,column=2,pady=50)

root.mainloop()

当我不使用多个 Windows 时,我可以打印和存储输入的数据

from tkinter import *

def Read():
    name = namevalue.get()
    print(\'Name:\',name)
    with open(\'attendance_data/detail.csv\',\'a+\') as f:
        f.write(name)

root = Tk()

root.geometry(\'500x500\')
root.resizable(False,False)
root.title(\'Main Window\')

name = Label(root,text=\'Name\',padx=20)
name.grid(row=1,column=2)
namevalue = StringVar()
nameEntry = Entry(root,textvariable=namevalue).grid(row=1,column=3,pady=25)
Button(root,text=\'Submit\',command=Read).grid(row=4,column=3,pady=25)  # command

root.mainloop()

在这方面帮助我。

    标签: python tkinter tkinter-entry toplevel tkinter-button


    【解决方案1】:

    您忘记将command 添加到第二个按钮:

    b2 = Button(..., command=Read).grid(row = 11,column=2,pady=50)
    

    需要注意的是,您不必将值存储在变量中,因为b2 的值是None,因此您不妨删除该变量。

    编辑:您需要将条目namevalue 设为全局变量,以便可以在New 之外和Read 和其他函数内部访问它。

    def New():
        global namevalue
        ....
    

    【讨论】:

    • @ Delrius 我已经编辑了 b2 按钮,它是我正在制作的其他窗口的一部分。我们的问题仍然存在
    • @VarunSingh我没有注意到,编辑了答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2018-05-28
    • 2020-11-12
    • 2015-09-22
    相关资源
    最近更新 更多