我开始使用 Tkinter 库在 Python 中编写一个简单的 GUI 应用程序。 一切正常,但是,要动态更改任何小部件(例如从“登录”到“注销”的按钮等),我必须从外部在函数中获取包含小部件对象本身的变量。 我可以通过两种方式做到这一点:
- 将小部件作为参数传递;
- 使用全局变量。
一个简化的例子:
1) 作为参数传递:
def changeLabel(b):
b.config(text='Logout')
btn1 = Button(f0,text="Login",width=15)
btn1.grid(row=1,column=2,rowspan=1,padx=10,ipadx=10)
changeLabel(btn1)
2) 或者使用全局变量:
def changeLabel():
global btn1
btn1.config(text='Logout')
btn1 = Button(f0,text="Login",width=15)
btn1.grid(row=1,column=2,rowspan=1,padx=10,ipadx=10)
changeLabel(btn1)
现在,我知道应该避免使用全局变量,但是将每个小部件作为参数传递给许多函数,即使在一个简单的应用程序中,也是一团糟。
那么,在运行时操作 Tkinter 小部件的最佳方式是什么?你能建议我正确的方法吗? 谢谢
请您参考如下方法:
在运行时操作 tkinter 小部件的最佳方法是将这些小部件存储为类的属性。
例如:
class Example(...):
def create_widgets(self):
...
self.btn1 = Button(...)
...
def changeLabel(self):
self.bt1.config(...)
有关详细信息,请参阅 Best way to structure a tkinter application
