Python中tkinter的使用

Python中tkinter的使用

一、代码

import tkinter as tk

class HomePage(tk.Frame):

    def close_window(self):
        self.controller.quit()
        self.controller.destroy()

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        
        label = tk.Label(self, text="Home Page")
        label.pack(pady=200, padx=200)
        
        button = tk.Button(self, text="Go to Page 1", command=lambda: controller.show_page(Page1))
        button.pack(pady=5)
        
        button2 = tk.Button(self, text="Go to Page 2", command=lambda: controller.show_page(Page2))
        button2.pack(pady=5)

        # 添加一个退出按钮
        quit_button = tk.Button(self, text="Quit", command=self.close_window)
        quit_button.pack(pady=5)


class Page1(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        
        label = tk.Label(self, text="Page 1")
        label.pack(pady=10, padx=10)
        
        button = tk.Button(self, text="Go back to Home", command=lambda: controller.show_page(HomePage))
        button.pack(pady=5)

class Page2(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        
        label = tk.Label(self, text="Page 2")
        label.pack(pady=10, padx=10)
        
        button = tk.Button(self, text="Go back to Home", command=lambda: controller.show_page(HomePage))
        button.pack(pady=5)

class MainApplication(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)
        
        self.pages = {}
        
        for Page in (HomePage, Page1, Page2):
            page = Page(container, self)
            self.pages[Page] = page
            page.grid(row=0, column=0, sticky="nsew")
        
        self.show_page(HomePage)
    
    def show_page(self, page):
        frame = self.pages[page]
        frame.tkraise()

if __name__ == "__main__":
    app = MainApplication()
    app.mainloop()

二、代码解析

这段代码是一个使用Tkinter库创建多个页面的简单GUI应用程序。让我逐步解释这个代码的主要部分:

  1. 导入Tkinter库:

    import tkinter as tk
    

    这行代码导入了Tkinter库,并将其别名为tk,以便更方便地引用库中的类和方法。

  2. 定义页面类:

    class HomePage(tk.Frame):
    
    class Page1(tk.Frame):
    
    class Page2(tk.Frame):
    

    这里定义了三个页面类,分别是HomePagePage1Page2,它们继承自Tkinter的Frame类。每个页面类都包含了一些标签和按钮,用于在页面间切换。

  3. 初始化页面类:

    def __init__(self, parent, controller):
    

    在每个页面类的__init__方法中,初始化页面的布局和控件。parent参数表示父容器,controller参数用于控制页面的切换。

  4. 主应用程序类:

    class MainApplication(tk.Tk):
    

    这里定义了主应用程序类MainApplication,继承自Tkinter的Tk类。这个类包含了应用程序的整体结构。

  5. 初始化主应用程序:

    def __init__(self, *args, **kwargs):
    

    MainApplication__init__方法中,创建了一个容器container,然后循环遍历所有的页面类(HomePagePage1Page2),为每个页面创建实例,并将其存储在self.pages字典中。

  6. 页面切换方法:

    def show_page(self, page):
    

    show_page方法用于切换页面,接受一个页面类作为参数,然后通过tkraise方法将相应页面的Frame提升到最前显示。

  7. 应用程序启动:

    if __name__ == "__main__":
        app = MainApplication()
        app.mainloop()
    

    在应用程序的主体部分,创建了MainApplication类的实例,然后调用mainloop方法启动主事件循环,使应用程序保持运行状态。

总的来说,这个程序使用了Tkinter库创建了一个简单的多页面GUI应用。每个页面有一个标签和一个返回主页的按钮。通过MainApplication类来管理页面之间的切换,使用户可以在不同页面之间进行导航。

三、运行结果

将该代码放入VS Code中切换到运行环境pytorch(Python 3.8.5)中运行即可呈现页面。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jmu xzh_0618

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值