簡體   English   中英

變量為0時禁用Tkinter按鈕

[英]Disable a Tkinter button when variables are at 0

command when but that didn't seem to work. 我正在學習python,所以其余的代碼可能有缺陷但我的主要問題是當Wood和Stone變量為0時我無法禁用此按鈕。我嘗試使用運行的while語句但是這似乎不起作用時, 命令。

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()

編輯:我認為現在發生的是它不經常檢查變量,看它是否低於零,因此根本沒有禁用。 function. 我想要的可能是需要在函數中運行的檢查。

我認為你的問題是你的變量是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)

此外,您必須避免循環。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM