繁体   English   中英

Python 3和Tkinter。 全局变量太多

[英]Python 3 and Tkinter. Too many global variables

我开始使用Tkinter库在Python中编写一个简单的GUI应用程序。 一切正常,但是要动态更改任何小部件(例如,将按钮从“登录”更改为“注销”等),我必须从外部获取包含小部件对象本身的变量。 我可以通过两种方式做到这一点:

  1. 将小部件作为参数传递;
  2. 使用全局变量。

一个简化的例子:

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(...)

有关更多信息,请参见构建tkinter应用程序的最佳方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM