2013-12-23 2 views
0

Я изучаю Tkinter, и я довольно новичок в программировании.Метод запускается после того, как он адресован как обработчик событий

Я пытаюсь создать окно, содержащее фрейм, содержащий кнопку, которая удаляет фрейм, содержащий кнопку. Это то, что я написал до сих пор:

class Menu(Frame): 
    def __init__(self, master): 
     super(Menu, self).__init__(master) 
     self.pack() 
     self.create_bttn() 

    def create_bttn(self): 
     self.b1 = Button(self, text ="Instruktioner") 
     self.b1["command"] = self.instructions() 
     self.b1.pack() 

    def instructions(self): 
     self.pack_forget() 

Этот код, кажется, создает рамку и кнопку, а затем удалить их снова, без меня вызов метода инструкции! Я не понимаю, почему и как этого избежать. Буду признателен за любую помощь.

ответ

1

При создании экземпляра вашего Menu объекта, он вызывает к create_bttn() и этот последний метод вызывает self.instructions(). Вы можете изменить некоторые из следующих строк:

self.b1["command"] = self.instructions() 

или внутри instructions метода

self.pack_forget() 

Редактировать

Попробуйте заменить этот

self.b1["command"] = self.instructions() 

с

self.b1["command"] = self.instructions # without() 
+0

Да, выполняется метод инструкций, но как я могу избежать этого, но все еще имея инструкции в качестве обработчика событий? – Sahand

+0

Я мало знаю о Tkinter, но попробуйте это: 'self.b1 [" command "] = self.instructions' ** without() ** – Christian

+0

большое вам спасибо !! – Sahand

0

Остановите его сам.

self.b1["command"] = self.instructions 
Смежные вопросы