Seite 1 von 1

Variable mit der man sich auf Knöpfe beziehen kann

Verfasst: Sonntag 8. März 2020, 18:25
von Connor
Guten Tag,
ich möchte Tic Tac Toe programmieren, allerdings nicht mit neun Funktionen für neun Knöpfe, sondern mit einer Funktion für alle.

Code: Alles auswählen

from tkinter import *


class TicTacToe:

    def __init__(self, master):
        frame = Frame(master)
        frame.grid()

        self.knopf1 = Button(master, width=7, height=3, command=lambda: self.Kreuz(1))
        self.knopf1.grid(column=1, row=1, padx=3, pady=3)

        self.knopf2 = Button(master, width=7, height=3, command=lambda: self.Kreuz(2))
        self.knopf2.grid(column=2, row=1, padx=3, pady=3)

    def Kreuz(self,c):
        self.(Hier möchte ich den Knopf haben der diese Methode rief).config(text='X')



root = Tk()
root.title("TicTacToe")


Test = TicTacToe(root)


root.resizable(width=False, height=False)
root.mainloop()



Test = TicTacToe(root)


root.resizable(width=False, height=False)
root.mainloop()
Jetzt stellt sich für mich die Frage, wie ich die Methode erkennen lasse, welcher Knopf diese aufgerufen hat.

Re: Variable mit der man sich auf Knöpfe beziehen kann

Verfasst: Sonntag 8. März 2020, 18:34
von __deets__
Es gibt dafuer verschiedene Moeglichkeiten, aber die einfachste fuer deinen Fall ist statt den schon jetzt schlecht benannten "self.knopfNUMMER" es gleich richtig zu machen, und eine Liste von Knoepfen zu haben. Und damit ist der Zugriff dann per Index auf diese Liste moeglich.

Code: Alles auswählen

     ...
     self._knoepfe = []
     self._knoepfe.append(Button(master, width=7, height=3, command=lambda: self.Kreuz(0))) # ACHTUNG: 0-basiert

    ...
    print(self._knoepfe[c])

Re: Variable mit der man sich auf Knöpfe beziehen kann

Verfasst: Sonntag 8. März 2020, 19:13
von Sirius3
Statt des *-Import `import tkinter as tk` und alle Namen per tk.xy ansprechen. Alles ab `root =` gehört in eine Funktion, Skizze man üblicherweise `main` nennt. Die 9 Knöpfe willst Du am besten mit einer Schleife erzeugen.