zunächst mal Hi, ich bin neu im Forum und auch noch sehr unerfahren mit Python bzw. generell mit Programmierung.
Vielleicht könnt ihr mir bei folgendem Problem mit Tkinter helfen. Ich will mich so kurz wie möglich fassen:
Ich habe eine Matrix aus 11x11 Reihen / Spalten erstellt, also insgesamt 121 Felder. Jedes Feld soll verschiedene Funktionen erfüllen können, deshalb habe ich die Klasse "Feld" erstellt. Die Darstellung der Felder erfolgt je nach Bedarf als tk.Button oder tk. Canvas. Nun hat jedes Feld als default das Attribut "aktiv" == False. Ich möchte dass sobald ich den Button / das Feld anklicke, "aktiv" == True gesetzt wird. Dafür habe ich die Funktion "aktiviere_button" geschrieben und als command dem Button zugewiesen. Sobald ich den Code aber starte ist das jeweilige Feld bereits aktiv bevor ich auf den Button klicke, obwohl als default "aktiv == False" ist.
Hier eine stark verkürzte Fassung von meinem Code:
Code: Alles auswählen
import tkinter as tk
root = tk.Tk()
def aktiviere_button(self):
self.aktiv = True
sa1 = tk.PhotoImage(file='SA1.png')
class Feld:
def __init__(self, feld_name, row,col,zustand = 'empty', aktiv = False):
self.feld_name = feld_name
self.row = row
self.col = col
self.zustand = zustand
self.aktiv = aktiv
def rendere_figur(self):
if self.zustand == 'empty':
feldzeichnung = tk.Button(root, image = sa1, bd = 0)
feldzeichnung.grid(row = self.row, column = self.col)
feldzeichnung.configure(command = aktiviere_button(self))
if __name__ == '__main__':
test = Feld('Test-Name',0,0)
test.rendere_figur()
print(test.aktiv)
tk.mainloop()