使用 Pyzo IDE 的变量 类 (StringVar, IntVar) 出现问题
Troubles with Variable Classes (StringVar, IntVar) using Pyzo IDE
我一直在尝试制作一个简单的 GUI,并且一直在研究 tkinter 的各种功能。但是,我一辈子都弄不明白为什么这行不通。
from tkinter import Tk, Label, Button, Radiobutton,IntVar,StringVar
class TestGUI:
def __init__(self, master):
self.master = master
master.title("Test GUI")
self.mode = IntVar()
self.modetext = StringVar()
self.modetext.set("What does this do?")
self.modelabel = Label(master,textvariable=self.modetext)
self.modelabel.pack()
self.close_button = Button(master, text="Close", command=master.destroy)
self.close_button.pack()
R1 = Radiobutton(master, text="Mode 1", variable=self.mode, value=0, command=self.modeset)
R1.pack()
R2 = Radiobutton(master, text="Mode 2", variable=self.mode, value=1, command=self.modeset)
R2.pack()
R3 = Radiobutton(master, text="Mode 3", variable=self.mode, value=2, command=self.modeset)
R3.pack()
def modeset(self):
self.modetext.set("Mode is " + str(self.mode.get()))
print(self.mode.get())
root = Tk()
T_GUI = TestGUI(root)
root.mainloop()
据我所知,应该做的是显示三个设置模式值的单选按钮,并在标签中显示 "Mode is [mode]" 和选择一个时打印模式的值。
相反,标签永远不会显示,并且选择单选按钮不会更改模式的值。
谁能告诉我发生了什么事?
看你的解释,StringVar
和 IntVar
是这里的问题所在。
对它们指定 master
应该可以解决您的问题。
self.mode = IntVar(master=self.master)
self.modetext = StringVar(master=self.master)
可能与 Pyzo 有关,因为在大多数 IDE 上,省略 master
不会造成任何问题。
我一直在尝试制作一个简单的 GUI,并且一直在研究 tkinter 的各种功能。但是,我一辈子都弄不明白为什么这行不通。
from tkinter import Tk, Label, Button, Radiobutton,IntVar,StringVar
class TestGUI:
def __init__(self, master):
self.master = master
master.title("Test GUI")
self.mode = IntVar()
self.modetext = StringVar()
self.modetext.set("What does this do?")
self.modelabel = Label(master,textvariable=self.modetext)
self.modelabel.pack()
self.close_button = Button(master, text="Close", command=master.destroy)
self.close_button.pack()
R1 = Radiobutton(master, text="Mode 1", variable=self.mode, value=0, command=self.modeset)
R1.pack()
R2 = Radiobutton(master, text="Mode 2", variable=self.mode, value=1, command=self.modeset)
R2.pack()
R3 = Radiobutton(master, text="Mode 3", variable=self.mode, value=2, command=self.modeset)
R3.pack()
def modeset(self):
self.modetext.set("Mode is " + str(self.mode.get()))
print(self.mode.get())
root = Tk()
T_GUI = TestGUI(root)
root.mainloop()
据我所知,应该做的是显示三个设置模式值的单选按钮,并在标签中显示 "Mode is [mode]" 和选择一个时打印模式的值。
相反,标签永远不会显示,并且选择单选按钮不会更改模式的值。
谁能告诉我发生了什么事?
看你的解释,StringVar
和 IntVar
是这里的问题所在。
对它们指定 master
应该可以解决您的问题。
self.mode = IntVar(master=self.master)
self.modetext = StringVar(master=self.master)
可能与 Pyzo 有关,因为在大多数 IDE 上,省略 master
不会造成任何问题。