Python / Tkinter:使用按钮更新类变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python / Tkinter:使用按钮更新类变量相关的知识,希望对你有一定的参考价值。
这可能是一个愚蠢的问题,但我在这里找不到答案,所以这里就是这样。
我正在设置一个Tkinter接口,而我只有一个按钮。单击此按钮时应将变量go
更改为1
,我已经通过要求它调用与同一类中的函数getGo(self)
来完成此操作。设置按钮的init
功能。
我的问题是它没有运行整个goTime()
函数:即,它不会更新我的变量go
。
init
功能:
class New_Toplevel_1:
go=0
def __init__(self, top=None):
self.butGo = Button(top,command=lambda *args: goTime(self))
self.butGo.place(relx=0.48, rely=0.84, height=41, width=65)
self.butGo.configure(activebackground="#7bd93b")
self.butGo.configure(font=font12)
self.butGo.configure(text='''Go!''')
def goTime(self):
print("It's go time!")
self.go=1
print("go has been updated")
输出看起来像这样(重复我点击按钮的次数):
It's go time!
It's go time!
It's go time!
It's go time!
为什么不更新变量?或甚至显示“go has been updated
”?谢谢!
答案
你错误地传递了command
参数,只是这样做:
self.butGo = Button(top, command=self.goTime)
要引用实例方法/属性,你必须做self.method_name
(self
只是一个约定)
如果需要传递参数,可以使用lambda:
command=lambda: self.go_time(5)
command=lambda n: self.go_time(n)
...
虽然我更喜欢functools.partial
:
from functools import partial
class NewToplevel1:
go = 0
def __init__(self, top=None):
self.butGo = Button(top, command=partial(self.go_time, 5))
self.butGo.place(relx=0.48, rely=0.84, height=41, width=65)
self.butGo.configure(activebackground="#7bd93b")
self.butGo.configure(text='''Go!''')
def go_time(self, n):
print("It's go time!")
self.go = n
print("go has been updated")
print(self.go)
以上是关于Python / Tkinter:使用按钮更新类变量的主要内容,如果未能解决你的问题,请参考以下文章