Я создаю небольшое приложение tkinter в python, и мне нужно создать большое количество кнопок, которые имеют атрибуты, поэтому я решил создать их в классе, а затем создать множество экземпляров класса.Однако, поскольку кнопка tkinter уже является объектом, я не слишком уверен, как будет работать композиция между двумя классами.Но в настоящее время, когда я создаю экземпляр своего класса, он выглядит как метод команды button, однако не будет запускать команду при нажатии.
Ниже представлен мой модуль для создания кнопок, которые я импортирую в свой основной модуль tkinter, и создания экземпляров.Мне было интересно, почему команда кнопки 'selectSeat' запускается при создании кнопок и почему она не запускается при нажатии кнопок.
from tkinter import *
class SeatButton():
def __init__(self, master, row, seat):
''' Initalises a seating button '''
self.colour = "green"
self.state = "free"
self.row = row
self.seat = seat
self.button = Button(master,bg=self.colour, command=self.selectSeat(), padx=10)
def update(self):
''' Updates the button's colour '''
print("i shouldnt run")
if self.state == "free":
self.colour = "green"
if self.state == "selected":
self.colour = "blue"
def selectSeat(self):
''' Calculates what happens when a button is clicked'''
# If the seat is avaliable, it is now selected
print("hwey")
if self.state == "free":
self.state = "selected"
self.colour = "blue"
elif self.state == "selected":
self.state == "free"
self.colour = "green"