python tkinter多个软件界面切换功能实现

python tkinter多个软件界面切换功能实现

小程序的实现采用python中的tkinter创建主窗口,切换窗口采用tkinter模块的的frame窗口控件进行创建,通过不同的按键调用显示不同的操作界面。操作界面的显示使用try…except…finally进行显示。思路:在tkinter中想要实现多个界面的切换,需要创建多个frame,而当frame01切换至frame02或frame03时,需要将当前的显示界面进行关闭,再显示其他的窗口。假设在程序编写过程中,程序主要在界面frame01中进行实现,没有在界面frame02、frame03中进行实现,按钮控件调用frame02 、frame03时软件就会报错,因此程序中采用try…except来处理程序运行异常。因此开始程序书写如下:

try:
	frame1.destroy()
	frame2.destroy()
	frame3.destroy()
except:
	pass

但是在此程序中,如果frame01不存在,程序直行道frame01,程序即运行停止,不会执行后面的程序。因此在程序中采用try…except…finally来执行程序,这样不管前面的是否报错,最后都会执行finally后面的代码。

  1. 多界面代码实现如下
    实现程序如下:
import tkinter
from tkinter import *
from ttkbootstrap import *


class MainWindows(Tk):
    def __init__(self):
        super().__init__()
        self.title("界面切换测试程序")  # 给界面添加一个标题
        self.geometry("544x344+400+200")  # 定义界面尺寸
        # self.resizable(0, 0)  # 定义界面窗口大小不可改变

        # 调用常用变量
        self.setup_main_gui()

    def setup_main_gui(self):
        # 给界面设置一个主题
        self.style = Style(theme="flatly")
        # 创建一个界面标题
        self.label_title = Label(self, text="多界面切换测试程序", font="微软雅黑 20 bold", relief="groove")
        self.label_title.place(relwidth=1, relheight=0.18, relx=0, rely=0)
        # 创建左侧按钮显示区域
        self.Pane_left = PanedWindow(self, relief="groove")
        self.Pane_left.place(relwidth=0.15, relheight=0.82, relx=0, rely=0.18)
        # 创建界面01控制按钮
        self.button_frame01 = Button(self.Pane_left, text="界面一", font="微软雅黑 12 bold", command=self.createframe01)
        self.button_frame01.place(relwidth=1, relheight=0.08, relx=0, rely=0.2)
        # 创建界面02控制按钮
        self.button_frame02 = Button(self.Pane_left, text="界面二", font="微软雅黑 12 bold", command=self.createframe02)
        self.button_frame02.place(relwidth=1, relheight=0.08, relx=0, rely=0.5)
        # 创建界面03控制按钮
        self.button_frame03 = Button(self.Pane_left, text="界面三", font="微软雅黑 12 bold", command=self.createframe03)
        self.button_frame03.place(relwidth=1, relheight=0.08, relx=0, rely=0.8)

    def setup_frame01(self):
        self.frame01 = Frame(self, relief="groove")
        self.frame01.place(relwidth=0.84, relheight=0.82, relx=0.16, rely=0.18)
        self.label_01 = Label(self.frame01, text="界面显示一", font="微软雅黑 12 bold", bg="green")
        self.label_01.place(relwidth=1, relheight=1, relx=0, rely=0)

    def setup_frame02(self):
        self.frame02 = Frame(self, relief="groove")
        self.frame02.place(relwidth=0.84, relheight=0.82, relx=0.16, rely=0.18)
        self.label_02 = Label(self.frame02, text="界面显示二", font="微软雅黑 12 bold", bg="red")
        self.label_02.place(relwidth=1, relheight=1, relx=0, rely=0)

    def setup_frame03(self):
        self.frame03 = Frame(self, relief="groove")
        self.frame03.place(relwidth=0.84, relheight=0.82, relx=0.16, rely=0.18)
        self.label_03 = Label(self.frame03, text="界面显示三", font="微软雅黑 12 bold", bg="blue")
        self.label_03.place(relwidth=1, relheight=1, relx=0, rely=0)

    def createframe01(self):
        try:
            self.frame01.destroy()
        except:
            pass
        finally:
            try:
                self.frame02.destroy()
            except:
                pass
            finally:
                try:
                    self.frame03.destroy()
                except:
                    pass
                finally:
                    self.setup_frame01()

    def createframe02(self):
        try:
            self.frame01.destroy()
        except:
            pass
        finally:
            try:
                self.frame02.destroy()
            except:
                pass
            finally:
                try:
                    self.frame03.destroy()
                except:
                    pass
                finally:
                    self.setup_frame02()

    def createframe03(self):
        try:
            self.frame01.destroy()
        except:
            pass
        finally:
            try:
                self.frame02.destroy()
            except:
                pass
            finally:
                try:
                    self.frame03.destroy()
                except:
                    pass
                finally:
                    self.setup_frame03()


if __name__ == "__main__":
    windows = MainWindows()
    windows.mainloop()

视频功能实现查看地址https://live.csdn.net/v/350830
在这里插入图片描述在这里插入图片描述在这里插入图片描述

Alt

  • 15
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python tkinter界面切换可以通过以下步骤实现: 1. 创建多个Frame,每个Frame对应一个界面。 2. 将这些Frame添加到主窗口中。 3. 使用grid()或pack()方法将其中一个Frame设置为当前显示的界面。 4. 在需要切换界面的时候,使用grid_forget()或pack_forget()方法隐藏当前界面,然后使用grid()或pack()方法显示需要切换到的界面。 例如,以下代码演示了如何实现两个界面之间的切换: ``` import tkinter as tk class App(tk.Tk): def __init__(self): super().__init__() self.title("界面切换") self.geometry("300x200") # 创建两个Frame self.frame1 = tk.Frame(self) self.frame2 = tk.Frame(self) # 在Frame1中添加控件 tk.Label(self.frame1, text="这是第一个界面").pack() tk.Button(self.frame1, text="切换到第二个界面", command=self.show_frame2).pack() # 在Frame2中添加控件 tk.Label(self.frame2, text="这是第二个界面").pack() tk.Button(self.frame2, text="切换到第一个界面", command=self.show_frame1).pack() # 将两个Frame添加到主窗口中 self.frame1.grid(row=, column=, padx=10, pady=10) self.frame2.grid(row=, column=, padx=10, pady=10) # 显示第一个界面 self.show_frame1() def show_frame1(self): self.frame2.grid_forget() # 隐藏第二个界面 self.frame1.grid() # 显示第一个界面 def show_frame2(self): self.frame1.grid_forget() # 隐藏第一个界面 self.frame2.grid() # 显示第二个界面 if __name__ == "__main__": app = App() app.mainloop() ``` 在这个例子中,我们创建了两个Frame,分别对应两个界面。在主窗口中,我们将这两个Frame都添加进去,并使用grid()方法将第一个Frame设置为当前显示的界面。在切换界面的时候,我们使用grid_forget()方法隐藏当前界面,然后使用grid()方法显示需要切换到的界面

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

边城小白鼠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值