2011-08-08 9 views
1

Tkウィンドウにリアルタイムで表示される整数を操作できるようにします。Tkinter:どうやって更新できるテキストフィールドを配置しますか?

は、私が試した:

xp = StringVar() 
Label(master, textvariable=xp).pack() 
xp.set(0) 

、その後の後に、私が試した:

xp.set(xp+1) 

しかし、それはメッセージを表示して、その行にひどく失敗しました:

Exception in Tkinter callback 
File "/usr/lib/.../Tkinter.py", line 1413, in __call__ 
    return self.func(*args) 
File "rpg.py", line 26, in fight 
    xp.set(xp+1) 
NameError: global name 'xp' is not defined 

私がしたいです"xp"値をインクリメントすることができ、リアルタイムでウィンドウに表示されます。私はまた、乗算と指数などを使って、整数として "xp"を操作できるようにしたい。

私が間違ってやっていることを指摘できれば、うれしいでしょう。

答えて

3

xpの範囲のように、最初のスニペットの変数には2番目のスニペットが含まれていません。これは、それらが実際に異なる変数であることを意味します(つまり、非常に似た名前を持つことになります)。したがって、2番目のスニペットはアクセシビリティのあるStringVarへのハンドルなしで実行されています。

+0

ええ、それは同じクラスですが、別の機能です。変数を宣言してクラス内の複数の関数で使用できるようにするにはどうすればよいですか? – thatbennyguy

+0

@thatbennyguy変数を "self"に割り当てることができます。つまり、クラスのどこからでもアクセスできます。単に "xp"を "self.xp"に置き換えてください。 – mesilliac

+0

http://docs.python.org/tutorial/classes.htmlによると、私が覚えていること(Pythonプログラマーではないので、注意してください!)に従って、 'xp'を' self .__ xp'に置き換えてください。 –

関連する問題