我正在尝试构建一个可让您在页面之间切换的小应用程序。这是我到目前为止所得到的:
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 :(得分: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()