【发布时间】:2020-06-01 12:06:45
【问题描述】:
我正在使用 Tkinter 构建一个 GUI,我希望用户可以选择通过单击按钮将条目小部件更改为标签小部件(反之亦然)。
我尝试了几种不同的方法,但无法正常工作。这是我尝试解决此问题的方法之一:
import tkinter as tk
show_label = False
class App(tk.Tk):
def __init__(self):
super().__init__()
label = tk.Label(self, text="This is a label")
entry = tk.Entry(self)
button = tk.Button(self, text="Label/Entry",
command=self.change)
if show_label:
label.pack()
else:
entry.pack()
button.pack()
def change(self):
global show_label
show_label = not show_label
self.update()
if __name__ == '__main__':
app = App()
app.mainloop()
除了上面的,我也试过了:
- 更新主循环内的应用实例,即在实例化
app = App()之后 - 将 show_label 设为类变量,将 change() 设为类方法
非常感谢您对此事的任何帮助!
谢谢
【问题讨论】:
-
__init__函数仅在您的应用程序上调用一次。窗口中的小部件集是可变的,但您必须在其他地方执行此操作。另见stackoverflow.com/q/3819354/1256452
标签: python tkinter dynamic widget