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