我正在尝试在tkinter中创建一个扫雷游戏。目标是单击一个按钮,随机选择一个数字,如果该数字为1,则给玩家一个分数。问题是,我希望您点击的按钮被禁用,并且它的颜色会根据“猫”和“猫”的颜色而改变。被发现与否。执行此操作的唯一按钮是右下角的按钮,它在颜色之间交替变为禁用,即使不是您单击的按钮也是如此。我不确定问题出在哪里,所以我很感激帮助。
from tkinter import *
from random import *
turns=10
points=0
def onclick():
global turns,points
iscat=randint(1,11)
btn.configure(state="disabled")
if iscat==1:
btn.configure(background="blue")
statlabel.configure(text="You found a cat!")
points=points+1
else:
btn.configure(bg="red")
statlabel.configure(text="It's empty! Hurry, or all the cats will die!")
turns=turns-1
root=Tk()
root.title("Catsweeper")
root.configure(background="black")
frame=Frame(root)
frame.configure(bg="black")
Grid.rowconfigure(root, 0, weight=1)
Grid.columnconfigure(root, 0, weight=1)
frame.grid(row=0, column=0)
grid=Frame(frame)
grid.grid(column=0, row=7, columnspan=2)
Grid.rowconfigure(frame, 7, weight=1)
Grid.columnconfigure(frame, 0, weight=1)
chosenx=int(input("How many rows? "))
choseny=int(input("How many columns? "))
for x in range(1,chosenx+1):
for y in range(1, choseny+1):
btn=Button(frame, command=onclick, state = "normal")
btn.grid(column=x, row=y)
statlabel=Label(frame, text="", background="red", fg="white")
statlabel.grid(column=choseny+1)
if turns==0:
statlabel.configure(text="GAME OVER")
btn.configure(state="disabled")
root.mainloop()
答案 0 :(得分:0)
onclick不知道你指的是哪个按钮,你没有传递它对特定按钮的引用。所以它只能使用分配给btn的最新东西,在你的情况下是右下角的按钮。