2017-02-20 10 views
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つのラジオボタンであるラベルに「モード[モード]で」やるとの値を印刷モードが選択されているときに表示されます。

代わりに、ラベルは表示されず、ラジオボタンを選択してもモードの値は変更されません。

誰も私に何が起こっているかの手がかりを与えることができますか?

+0

完璧な動作:https://i.imgur.com/sQo9YzL.png(macOS Sierra 10.12.3、Python 3.6) – falsetru

+0

Win7、Python 3.5.2でも動作します。お使いのオペレーティングシステムとPythonのバージョンは何ですか? – Lafexlos

+0

変数クラス(IntVar、StringVarなど)のような問題が発生しているようです。彼らに親を指定してみてください(ちょうど考え、それがうまくいくかどうかわかりません)。 'self.mode = IntVar(master = self.master)'、 'self.modetext = StringVar(master = self.master)' – Lafexlos

答えて

0

あなたの説明を見ると、StringVarIntVarが問題を引き起こしています。

masterを指定すると問題が解決するはずです。

self.mode = IntVar(master=self.master) 
self.modetext = StringVar(master=self.master) 

何かが問題が発生することはありませんmasterを省略し、ほとんどのIDEにおそらくPyzoで行います。

関連する問題