我仍在学习python,所以我的其余代码可能存在缺陷,但我的主要问题是当Wood和Stone变量为0时我无法禁用此按钮。我尝试使用while语句 stone>时运行 button.config(state = DISABLED)命令0和木材> 0 但这似乎没有用。
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()
编辑: 我认为现在正在发生的是它不经常检查变量以查看它是否低于零,因此根本不会禁用。我可能需要考虑的是在 craftPick 函数中运行的检查。
答案 0 :(得分:0)
我认为你的问题是你的变量是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)