基本上,我在python中使用Tkinter,以便在按下按钮时将1添加到变量中。我有另一个变量,它等于我的第一个变量10次。当我点击向我的原始变量添加一个的按钮时,第二个变量(x * 10)不会加倍。看看:
def add1():
var1.set(var1.get() + 1)
def pringvar3()
print(var3.get())
from tkinter import *
main = Tk()
button = Button(main, text="Add 1", command=add1)
button.pack()
button2 = Button(main, text="Print var3", command=printvar3)
button2.pack()
var1 = IntVar()
var1.set(1)
var2 = IntVar()
var2.set(10)
var3 = IntVar()
var3.set(var2.get() * var1.get())
该代码有什么问题?当我单击按钮时,首先是1然后是2,它仍然将变量打印为10。
答案 0 :(得分:1)
您有一堆拼写错误和缺少冒号,但更重要的是,您不会更改函数回调中的值。请记住,您只需设置一次值,而不是实际重置它。
def printvar3():
global var3
var3.set(var2.get() * var1.get())
print(var3.get())
答案 1 :(得分:0)
tkinter
IntVar
个对象无法更新可能在某些时候使用过其值的其他对象,因此更改var1
不会自动更新var3
- 你必须明确地做到这一点。
这是一个基于您的代码的简单演示,其中添加了一个额外的按钮,点击后执行此操作:
def add1():
var1.set(var1.get() + 1)
def updatevar3():
var3.set(var2.get() * var1.get()) # recalulate value
def printvar3():
print(var3.get())
from tkinter import *
main = Tk()
button = Button(main, text="Add 1", command=add1)
button.pack()
button2 = Button(main, text="Update var3", command=updatevar3)
button2.pack()
button3 = Button(main, text="Print var3", command=printvar3)
button3.pack()
var1 = IntVar()
var1.set(1)
var2 = IntVar()
var2.set(10)
var3 = IntVar()
var3.set(var2.get() * var1.get()) # set initial value
main.mainloop()
print('done')