0

我正在尝试构建一个小应用程序,让您在页面之间切换。这是我到目前为止得到的:

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 更改窗口?

谢谢您的帮助!

4

1 回答 1

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()
于 2013-04-22T11:20:24.950 回答