这个问题在这里已有答案:
我有以下代码有几个问题。第一个是createUser()命令将在窗口出现后立即运行。
第二个是我的按钮绑定到该命令将不会运行命令本身(我已经通过尝试将一个简单的字符串打印回IDLE来测试它)。
我似乎遇到的最后一个问题是,当我将变量设置为不同的内容时,我的标签不会更新,即使在命令之外使用.set()也是如此。
root = tk.Tk()
root.title("Sign In Screen")
tk.Label(root,text="Username: ",font="Arial").grid(row=0,column=0)
userIDEntry = tk.Entry(root)
userIDEntry.grid(row=0,column=1)
tk.Label(root,text="Password: ",font="Arial").grid(row=1,column=0)
passwordEntry = tk.Entry(root)
passwordEntry.grid(row=1,column=1)
tk.Label(root,text="Confirm Password: ",font="Arial").grid(row=2,column=0)
passwordConfirm = tk.Entry(root)
passwordConfirm.grid(row=2,column=1)
def createAccount():
if passwordEntry.get() == passwordConfirm.get():
exampleFunction() #doesntwork
else:
var1.set("Passwords do not match!")
root.update()
var1 = tk.StringVar()
var1.set("")
tk.Button(root,text="CREATE ACCOUNT",font="Arial",command=createAccount()).grid(row=3,column=0,columnspan=2)
tk.Label(root,textvariable=var1).grid(row=4,column=0,columnspan=2)
root.mainloop()
我希望有人可以帮助我,我正在努力教自己Tkinter并且不能停止遇到像这样的小问题。
tkinter有一些特殊的语法(类似于线程)。你应该指定command=function
而不是command=function()
。这将解决您的前两个问题。事实上,在我通过一些小调整运行之后,它(我认为)可以完成你想要的更新变量!
import tkinter as tk
root = tk.Tk()
root.title("Sign In Screen")
tk.Label(root, text="Username: ", font="Arial").grid(row=0, column=0)
userIDEntry = tk.Entry(root)
userIDEntry.grid(row=0, column=1)
tk.Label(root, text="Password: ", font="Arial").grid(row=1, column=0)
passwordEntry = tk.Entry(root)
passwordEntry.grid(row=1, column=1)
tk.Label(root, text="Confirm Password: ", font="Arial").grid(row=2, column=0)
passwordConfirm = tk.Entry(root)
passwordConfirm.grid(row=2, column=1)
def createAccount():
if passwordEntry.get() == passwordConfirm.get():
print('thing') # your function was not included in post
else:
var1.set("Passwords do not match!")
root.update()
var1 = tk.StringVar()
var1.set("")
tk.Button(root, text="CREATE ACCOUNT", font="Arial", command=createAccount).grid(row=3, column=0, columnspan=2) # removed ()
tk.Label(root, textvariable=var1).grid(row=4, column=0, columnspan=2)
root.mainloop()