2014-11-15 4 views
0

Я попытался создать простое меню, используя класс в Python3. Я экспериментировал с созданием начального меню с помощью кнопки «Другое меню», а затем один раз щелкнул по нему, чтобы перейти в другое меню с помощью кнопки «Это другое меню».Создание кнопки для изменения меню

Однако в настоящее время он отображает только меню при запуске.

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

Что я делаю неправильно в нижнем?

#import the tkinter module 
from tkinter import * 

#create a new class 
class Try(Frame): 
    def __init__(self, master): 
     super(Try, self).__init__(master) 
     self.grid(row = 2, sticky = W+E+N+S) 
     #,padx=300 
     self.create_widgets() 

    def create_widgets(self): 

     #create buttons 
     self.bttn1 = Button(self, text = 'Other Menu') 
     self.bttn1['command'] = self.create_widgets2() 
     self.bttn1.grid(sticky = W+E+N+S) 

    def create_widgets2(self): 

     #create buttons 
     self.bttn2 = Button(self, text = 'This is the other menu') 
     self.bttn2.grid(sticky = W+E+N+S) 

#main 
root = Tk() 
root.title('Editor') 
root.geometry() 
root.configure(background='black') 

app = Try(root) 

root.mainloop() 

ответ

0

Вы вызываете create_widgets2 метод внутри метода create_widgets при назначении command опции баттона:

self.bttn1['command'] = self.create_widgets2() 
#           ^^ 

Вы должны удалить скобки так, что вариант command назначается только объект функции :

self.bttn1['command'] = self.create_widgets2 
+0

спасибо. Теперь он отображает только начальное меню, но просто добавляет другую кнопку при нажатии. Как я могу заменить кнопку «другое меню»? –

+0

Вы можете вызвать 'self.bttn1.grid_forget()' inside 'create_widgets2', чтобы удалить старую кнопку из окна. Чтобы уничтожить его объект, вызовите 'self.bttn1.destroy()'. – iCodez

+0

'self.bttn2 = Button (self, text = 'Это другое меню') self.bttn2.grid (sticky = W + E + N + S) self.bttn1.grid_forget()' Это возвращает ' self.bttn1.grid_forget() ^ TabError: непоследовательное использование вкладок и пробелов в отступе' –

Смежные вопросы