2016-05-25 5 views
1

私はPythonをまだ学んでいるので、コードの残りの部分に欠陥があるかもしれませんが、私の主な問題は、WoodとStoneの変数が0のときにこのボタンを無効にできます。 button.config(state = DISABLED)コマンドを実行するwhileステートメントを使用しようとしました。変数が0のときにTkinterボタンを無効にする

from tkinter import * 
from tkinter import tkk 

class main: 
def __init__(self, master): 
    frame = Frame(master) 
    frame.pack() 
    self.CraftPickaxe = Button(frame, text = 'Pickaxe', command = self.craftPick) 
    self.CraftPickaxe.pack() 
    ###RESOURCES### 
    self.wood = 1 
    self.stone = 1 
    self.pickaxe = 0 
def craftPick(self): 
    self.stone -= 1 
    self.wood -= 1 
    self.pickaxe += 1 
    print(self.stone) 
    print(self.wood) 
    print(self.pickaxe) 
def loop(self): 
    while True: 
     if self.stone < 0 and self.wood < 0: 
      self.CraftPickaxe.config(state=DISABLED) 
     elif self.stone > 0 and self.wood > 0: 
      self.CraftPickaxe.config(state=NORMAL) 



root = Tk() 
b = main(root) 
root.mainloop() 

EDIT: 何だと思いますが、今起こっているが、そのは常にそれがゼロを下回るかどうかを確認するために、変数をチェックしていないので、全く無効ではないということです。私が考えているのは、 craftPickで動作するチェックです。

答えて

0

あなたの問題は、変数が0で負の数ではないと思います。

だからあなたの変数があなたの変数が0未満でないので、それはそれを無効にしません0以上であるかどうかをチェックするときは、この優れた

while True: 
    if self.stone < 1 and self.wood < 1: 
     self.CraftPickaxe.config(state=DISABLED) 
    elif self.stone > 0 and self.wood > 0: 
     self.CraftPickaxe.config(state=NORMAL) 

で試してみてください正確に0

ですまた、ループを避ける必要があります。

def craftPick(self): 
    self.stone -= 1 
    self.wood -= 1 
    self.pickaxe += 1 
    if self.stone < 1 and self.wood < 1: 
     self.CraftPickaxe.config(state=DISABLED) 
    elif self.stone > 0 and self.wood > 0: 
     self.CraftPickaxe.config(state=NORMAL) 
+0

これは問題の1つであったようです。 私は今何が起こっていると考えていますが、変数がゼロ以下になっていても無効にならないかどうかを常にチェックしているわけではありません。 – Joi

+0

あなたの質問を解決したら、upvoteを覚えて正しい答えとして選択してください:)私はさらにそれを助けることができるように詳細 – Juanvulcano

+0

はい、ありがとう、私は今それについて考えているときは非常に簡単だと思う。正解として選択: – Joi

関連する問題