Ich versuche, ein Programm zu erstellen, das ein Raster von Schaltflächen erstellt, und fordert dann den Benutzer auf, bestimmte Schaltflächen auszuwählen.Erstellen eines Gitters von Schaltflächen mit tkinter und Fragen an den Benutzer zur Auswahl bestimmter Schaltflächen
Wenn der Benutzer die richtige Schaltfläche auswählt, wird diese Schaltfläche deaktiviert und das Programm fragt den Benutzer nach einer anderen zufälligen Schaltfläche, bis das gesamte Raster ausgefüllt ist. Wenn der Benutzer die falsche Schaltfläche auswählt, passiert nichts (oder vielleicht erscheint ein Fehler-Label).
Mein Gedankengang ist, dass ich eine Klasse wie unten erstellen werde, wo jede Schaltfläche ein Zeilen- und Spaltenattribut hat und wenn eine Schaltfläche angeklickt wird, ruft sie eine Funktion auf, die die aktuellen Schaltflächen Zeile und Spalte mit der erforderlichen Zeile vergleicht Säule.
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()
Meine primäre Frage ist, wie ich über das Erstellen des checkButtonPos-Befehls nachdenken sollte. Nehmen wir an, wir möchten, dass der Benutzer die Schaltfläche mit den Koordinaten (Zeile 3, Spalte 4) das erste Mal drückt und wenn diese Schaltfläche gedrückt wird, erscheint eine neue Koordinate, bis alle Schaltflächen geklickt wurden. Ich war so etwas wie die folgenden denken:
def checkButtonPos(requiredRow,requiredCol):
buttonColPosition = self.colPosition
buttonRowPosition = self.rowPosition
if buttonColPosition == requiredCol and buttonRowPosition == requiredRow:
self.config(text = "Yes",state = DISABLED)
Ich bin unsicher, wie ich würde die requiredRow ändern und requiredCol jedes Mal wählt der Benutzer die richtige Taste.
Vielen Dank für jede Hilfe im Voraus!