2013-04-22 2 views
0

Я пытаюсь создать небольшое приложение, которое позволяет переключаться между страницами. Это то, что я до сих пор:Управление смены окон с помощью Tkinter

import tkinter 
from tkinter import ttk 

def main(): 
    root=tkinter.Tk() 
    root.title("Control") 
    first_page = FirstWindow(root) 
    root.mainloop() 


def change_to_secondwindow(): 
    first_page.grid_forget() 
    second_page = SecondWindow(root) 


class FirstWindow(ttk.Frame): 
    def __init__(self,root): 
     ttk.Frame.__init__(self,root) 
     self.grid() 
     self.widgets1_create() 

    def widgets1_create(self): 
     self.b1 = ttk.Button(self, text="First Page", command=change_to_secondwindow) 
     self.b1.grid() 



class SecondWindow(ttk.Frame): 
    def __init__(self,root): 
     ttk.Frame.__init__(self,root) 
     self.grid() 
     self.widgets2_create() 

    def widgets2_create(self): 
     self.b2 = ttk.Button(self, text="Second Page") 
     self.b2.grid() 


main() 

Теперь, если я нажму на кнопку «Первая страница» изменить на второй странице я получаю сообщение об ошибке. В нем говорится, что глобальное имя first_page не определено. Какая у меня ошибка? Есть ли лучший способ контролировать изменение окон с помощью Tkinter?

Благодарим за помощь!

+0

ошибка говорит о том, что глобальный 'first_page' не определен. Можете ли вы показать в своем коде, где, по вашему мнению, вы создаете глобальное имя 'first_page'? –

ответ

0

first_page - локальная переменная main(), но вы пытаетесь использовать ее как глобальную переменную в change_to_secondwindow(). Вместо этой функции, общий Python идиомы, чтобы поместить этот код внутри if блока, в котором Вы проверяете, если модуль является основной программой:

# remove the call to main() 

if __name__ == '__main__': 
    root=Tkinter.Tk() 
    root.title("Control") 
    first_page = FirstWindow(root) 
    root.mainloop() 
+0

Хорошо, это работает, спасибо! Теперь моя конечная цель - довольно большой графический интерфейс с восемью различными окнами. Так что было бы действительно здорово, если бы кто-нибудь мог сказать мне, как я могу позволить вернуться на первую страницу и как я могу расширить это, если блок – user2304540

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