[英]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.