为什么我的按钮无法正常工作?

时间:2017-01-18 12:05:11

标签: python tkinter

我正在尝试在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()    

1 个答案:

答案 0 :(得分:0)

onclick不知道你指的是哪个按钮,你没有传递它对特定按钮的引用。所以它只能使用分配给btn的最新东西,在你的情况下是右下角的按钮。