【发布时间】:2021-03-05 04:34:42
【问题描述】:
我正在编写一个程序,以便用户可以在一个窗口中输入他的详细信息,然后会出现一个显示输出的新窗口。但是,由于某种原因,第二个窗口中的标签没有打印出来。
from tkinter import *
window = Tk()
window.title("Login")
window.geometry("500x500")
window.resizable(0,0)
l = Label(window, text="Name: ", font="Roman 20 bold",padx=10,pady=10)
l.grid(row=0,column=0)
l = Label(window, text="Password: ", font="Roman 20 bold",padx=10,pady=10)
l.grid(row=1,column=0)
e1 = Entry(window, font="Roman 20 bold")
e1.grid(row=0,column=1)
e2 = Entry(window, font="Roman 20 bold",show="*")
e2.grid(row=1,column=1)
def test():
a= e1.get()
b= e2.get()
mess = Tk()
mess.title("Output")
mess.geometry("500x500")
mess.resizable(0,0)
m= StringVar()
m.set("Name: "+a)
l = Label(mess, textvariable=m, font="Roman 20 bold",padx=10,pady=10)
l.grid()
n= StringVar()
n.set("Password: "+b)
l = Label(mess, textvariable=n, font="Roman 20 bold",padx=10,pady=10)
l.grid(row=1,column=0)
mess.mainloop()
b = Button(window,text="Click",font="Roman 15 bold",width=15,command= test)
b.grid(row=2,column=0)
window.mainloop()
我不认为 get() 方法有问题,因为我能够打印在 Python shell 屏幕上获得的值。所以,我认为这可能是 label() 的问题,尽管我可能错了。
【问题讨论】:
-
您的问题已被多次询问。
-
将
m=StringVar()移动到测试函数内的l.grid()(缩进)。另外,更改mess = Tk()->mess=Toplevel(window)并删除mess.mainloop() -
answer of this question 可能会有所帮助。
标签: python tkinter tkinter-entry tkinter-label