Tkinter Variable类(如StringVar或IntVar)允许将tk框架窗口小部件作为第一个参数。这个论点用于什么?
答案 0 :(得分:4)
它更多的是关于使用什么根窗口。它默认为创建的第一个根。但是,有时(很少)您可能需要在程序中多次使用Tk()
。在这种情况下,将所有变量与适当的根关联起来很重要。
以下是一个例子:
import tkinter as tk
class menu:
def __init__(self):
self.game = tk.Tk()
self.game.geometry('200x200')
self.var = tk.StringVar()
#~ self.var = tk.StringVar(master=self.game) # this solves the problem
ent = tk.OptionMenu(self.game, self.var, 'one', 'two', 'three', 'four')
ent.pack()
lbl = tk.Label(self.game, textvariable=self.var)
lbl.pack()
btn = tk.Button(self.game, text="new window", command=self.playagain)
btn.pack()
self.game.mainloop()
def playagain(self):
menu()
menu()