Witam, piszę program Jaka to liczba, wykorzystujący interfejs GUI, napotkałem pewien problem. Poniżej wklejam klasę aplikacji. Problem polega na tym, że metoda check_answer jest wywoływana automatycznie, mimo że powiązałem to zdarzenie z kliknięciem przycisku quess_bttn.
class Application(Frame):
"""Aplikacja wykorzystująca GUI"""
def __init__(self, master):
super(Application, self).__init__(master)
self.grid()
self.correct = random.randint(1, 100)
self.create_widgets()
def create_widgets(self):
"""Utwórz widżety Button, Entry, Label"""
# Stwórz etykietę z nazwą
Label(self, text="Jaka to liczba?").grid(row=0, column=0, sticky=W)
# Stwórz etykietę z opisem gry
rules = "Wylosowałem liczbę z zakresu 1 do 100."
self.rules_lbl = Label(self, text=rules).grid(row=1, column=0, columnspan=2, sticky=W)
self.quess_lbl = Label(self, text="Zgadnij jaką:").grid(row=2, column=0, sticky=W)
self.quess_ent = Entry(self)
self.quess_ent.grid(row=2, column=1, sticky=W)
self.quess_bttn = Button(self, text="Akceptuj", command=self.check_answer())
self.quess_bttn.grid(row=2, column=2, sticky=W)
def check_answer(self):
"""Sprawdź odpowiedź i wypisz odpowiednią informację"""
quess = self.quess_ent.get()
if quess:
quess = int(quess)
if quess > self.correct:
message = "Za duża!"
elif quess < self.correct:
message = "Za mała!"
else:
message = "Zgadłeś"
self.quess_info = Label(self, text=message).grid(row=3, column=0, sticky=W)
Tutaj sam przycisk:
self.quess_bttn = Button(self, text="Akceptuj", command=self.check_answer())
self.quess_bttn.grid(row=2, column=2, sticky=W)
Oraz funkcja check_answer (if quess dodany, bo inczej wywalało program)
def check_answer(self):
"""Sprawdź odpowiedź i wypisz odpowiednią informację"""
quess = self.quess_ent.get()
if quess:
quess = int(quess)
if quess > self.correct:
message = "Za duża!"
elif quess < self.correct:
message = "Za mała!"
else:
message = "Zgadłeś"
self.quess_info = Label(self, text=message).grid(row=3, column=0, sticky=W)