这里是我到目前为止的代码(请忽略变量名。我仍在学习如何使用Python(:
root = Tk()
testvariable = 0
bruh = 0
test = Checkbutton(root, variable = testvariable, )
test.pack()
test1 = Entry(root,textvariable = bruh, text = "0", width = 4)
test1.pack()
root.mainloop()
我注意到,当我选择Checkbutton来关闭或打开它时,Entry小部件会自动将其值更改为Checkbutton的值。有办法防止这种情况吗?
在tkinter中设置变量时,请确保使用内置类型(https://docs.python.org/3/library/tkinter.html#coupling-小部件变量(。
对于Entry小部件,您可以直接使用get方法将其值分配给变量。至于Checkbutton小部件,请确保为其分配一个";IntVar";类型以正确处理其值传递。我已经在下面的代码中演示了如何同时执行以上两项操作。
import tkinter as tk
root = tk.Tk()
checkbox_var = tk.IntVar()
testvariable = 0
bruh = 0
test = tk.Checkbutton(root, variable=checkbox_var)
test.pack()
test1 = tk.Entry(root)
test1.pack()
def testOutput():
testvariable = checkbox_var.get()
bruh = test1.get()
print("Checkbox is", testvariable)
print("Entry is", bruh)
button = tk.Button(root, text="Test Button", command=testOutput)
button.pack()
root.mainloop()
它们相互模仿,因为它们的两个textvariable
属性都是相同的值。简短的答案是给它们每个不同的textvariable
值。
此外,您应该将该属性设置为tkinter变量(如StringVar
或IntVar
(的实例。然而,您很少需要在Entry
小部件中使用该属性,因为小部件本身为您提供了获取和设置值的方法。