1
私は単純なGUIを作ろうとしていて、tkinterのさまざまな機能を使って作業してきました。しかし、私の人生はなぜこれがうまくいかないのか理解できません。Pyzo IDEを使用した変数クラスのトラブル(StringVar、IntVar)
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()
何それべき、私の知る限り、モードの値、およびディスプレイを設定し、ディスプレイ3つのラジオボタンであるラベルに「モード[モード]で」やるとの値を印刷モードが選択されているときに表示されます。
代わりに、ラベルは表示されず、ラジオボタンを選択してもモードの値は変更されません。
誰も私に何が起こっているかの手がかりを与えることができますか?
完璧な動作:https://i.imgur.com/sQo9YzL.png(macOS Sierra 10.12.3、Python 3.6) – falsetru
Win7、Python 3.5.2でも動作します。お使いのオペレーティングシステムとPythonのバージョンは何ですか? – Lafexlos
変数クラス(IntVar、StringVarなど)のような問題が発生しているようです。彼らに親を指定してみてください(ちょうど考え、それがうまくいくかどうかわかりません)。 'self.mode = IntVar(master = self.master)'、 'self.modetext = StringVar(master = self.master)' – Lafexlos