Python 3.x 使用tkinter创建按钮网格,并要求用户选择特定的按钮

Python 3.x 使用tkinter创建按钮网格,并要求用户选择特定的按钮,python-3.x,button,tkinter,Python 3.x,Button,Tkinter,我试图创建一个程序,创建一个按钮网格,然后要求用户选择特定的按钮 如果用户选择了正确的按钮,则该按钮将被禁用,程序会要求用户选择另一个随机按钮,直到整个网格被填满。如果用户选择了错误的按钮,则不会发生任何事情(或者可能会显示错误标签) 我的思路是,我将创建一个类,如下所示,其中每个按钮都有一个row和column属性,当单击按钮时,它将调用一个函数,将当前按钮的行和列与所需的行和列进行比较 from tkinter import * class gridButtons(): def __ini

我试图创建一个程序,创建一个按钮网格,然后要求用户选择特定的按钮

如果用户选择了正确的按钮,则该按钮将被禁用,程序会要求用户选择另一个随机按钮,直到整个网格被填满。如果用户选择了错误的按钮,则不会发生任何事情(或者可能会显示错误标签)

我的思路是,我将创建一个类,如下所示,其中每个按钮都有一个row和column属性,当单击按钮时,它将调用一个函数,将当前按钮的行和列与所需的行和列进行比较

from tkinter import *

class gridButtons():
def __init__(self,rowPosition, colPosition,masterFrame):
    self.rowPosition = rowPosition
    self.colPosition = colPosition

    self.button = Button(masterFrame,text = str(self.colPosition)+","+str(self.rowPosition),command = self.checkButtonPos,width=5)
    self.button.grid(row = self.rowPosition,column = self.colPosition,padx=3, pady=3)

root = Tk()
buttonFrame = Frame(root)
buttonFrame.pack()

buttonList = []
for r in range(10):
    for c in range(10):
        buttonToCreate = gridButtons(r,c,buttonFrame)
        buttonList.append(buttonToCreate)
root.mainloop()
我的主要问题是如何考虑创建checkButtonPos命令。假设我们希望用户第一次按下带有坐标的按钮(第3行,第4列),如果按下该按钮,则会出现一个新的坐标,直到单击所有按钮。我的想法如下:

def checkButtonPos(requiredRow,requiredCol):
    buttonColPosition = self.colPosition
    buttonRowPosition = self.rowPosition

    if buttonColPosition == requiredCol and buttonRowPosition == requiredRow:
        self.config(text = "Yes",state = DISABLED)
我不确定每次用户选择正确的按钮时,我将如何更改requiredRow和requiredCol


提前谢谢你的帮助

您可以使用
functools.partial
将参数烘焙到命令函数中

from functools import partial
self.button = Button(command = partial(self.checkButtonPos, rowPosition, colPosition))
这意味着当按下按钮时,它会将行和列作为参数传递。换句话说,单击按钮运行
self.checkButtonPos(rowPosition,colPosition)
(而不仅仅是
self.checkButtonPos()

顺便说一句,我很高兴你在学习课程,但在这种情况下,课程没有增加任何价值