知识点:

使用 tkinter.Frame.tkraise() 函数去提升当前 tkinter.Frame 的 z 轴顺序,使得多个 tkinter.Frame 的可见性得以切换

本文基于:win7 + python34

1

2

3

4

5

import matplotlib
matplotlib.use("TkAgg")from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figureimport tkinter as tk
from tkinter import ttkLARGE_FONT= ("Verdana", 12)class Application(tk.Tk):'''多页面测试程序界面与逻辑分离'''def __init__(self):super().__init__()self.iconbitmap(default="kankan_01.ico")self.wm_title("多页面测试程序")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.frames = {}for F in (StartPage, PageOne, PageTwo, PageThree):frame = F(container, self)self.frames[F] = frameframe.grid(row=0, column=0, sticky="nsew")  # 四个页面的位置都是 grid(row=0, column=0), 位置重叠,只有最上面的可见!!self.show_frame(StartPage)def show_frame(self, cont):frame = self.frames[cont]frame.tkraise() # 切换,提升当前 tk.Frame z轴顺序(使可见)!!此语句是本程序的点睛之处class StartPage(tk.Frame):'''主页'''def __init__(self, parent, root):super().__init__(parent)label = tk.Label(self, text="这里是主页", font=LARGE_FONT)label.pack(pady=10,padx=10)button1 = ttk.Button(self, text="去到第一页", command=lambda: root.show_frame(PageOne)).pack()button2 = ttk.Button(self, text="去到第二页", command=lambda: root.show_frame(PageTwo)).pack()button3 = ttk.Button(self, text="去到绘图页", command=lambda: root.show_frame(PageThree)).pack()class PageOne(tk.Frame):'''第一页'''def __init__(self, parent, root):super().__init__(parent)label = tk.Label(self, text="这是第一页", font=LARGE_FONT)label.pack(pady=10,padx=10)button1 = ttk.Button(self, text="回到主页", command=lambda: root.show_frame(StartPage)).pack()button2 = ttk.Button(self, text="去到第二页", command=lambda: root.show_frame(PageTwo)).pack()class PageTwo(tk.Frame):'''第二页'''def __init__(self, parent, root):super().__init__(parent)label = tk.Label(self, text="这是第二页", font=LARGE_FONT)label.pack(pady=10,padx=10)button1 = ttk.Button(self, text="回到主页", command=lambda: root.show_frame(StartPage)).pack()button2 = ttk.Button(self, text="去到第一页", command=lambda: root.show_frame(PageOne)).pack()class PageThree(tk.Frame):'''第三页'''def __init__(self, parent, root):super().__init__(parent)tk.Label(self, text="这是绘图页", font=LARGE_FONT).pack(pady=10,padx=10)button1 = ttk.Button(self, text="回到主页", command=lambda: root.show_frame(StartPage)).pack()fig = Figure(figsize=(5,5), dpi=100)a = fig.add_subplot(111)a.plot([1,2,3,4,5,6,7,8],[5,6,1,3,8,9,3,5])canvas = FigureCanvasTkAgg(fig, self)canvas.show()canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)toolbar = NavigationToolbar2TkAgg(canvas, self)toolbar.update()canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True)if __name__ == '__main__':# 实例化Applicationapp = Application()# 主消息循环:app.mainloop()

tkinter的GUI设计:界面与逻辑分离(三)-- 多页面相关推荐

  1. pyqt5界面与逻辑分离--信号槽的装饰器实现方式

    pyqt5界面与逻辑分离--信号槽的装饰器实现方式 本文展示了 pyqt5 信号槽的装饰器实现方式(借鉴自 eirc6) 一个简单的例子.实现功能:两个数相加,显示结果.如图 两个文件,第一个是界面文 ...

  2. Python爬虫实战(十一) B站热门信息爬取(窗口版)| Tkinter实现GUI交互式界面

    目录 一.主页面设计 1.1 Tkinter基本介绍 1.2 设计布局 二.查询功能实现 2.1 分区字典构建 2.2 输入日期处理 2.3 书写爬虫函数 三.全部代码 更多信息查询(2021-2-1 ...

  3. python canvas画移动物体_Python:Tkinter的GUI设计——物体实时移动

    程序 核心步骤是坐标的移动 和窗口的更新. from tkinter import * import time tk = Tk() #画布 tk.title('EIT_tank') tk.resiza ...

  4. python逻辑与界面分离_一种数据与逻辑分离的Python单元测试工具

    一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...

  5. MATLAB美图秀秀系统GUI设计[完美运行,GUI界面,详细教程,万字文稿]

    课题名称 基于MATLAB的美图秀秀系统GUI设计 GUI框架链接:matlab美图秀秀[GUI,磨皮,白平衡,特效].zip_matlabGUI制作美图秀秀界面-专业指导文档类资源-CSDN下载 课 ...

  6. MATLAB GUI图形界面设计一个学生管理系统

    设计一个简单的学生成绩管理程序,包含如下功能: 1.可创建不少于100名学生成员: 2.每名成员的记录包括:学号.姓名.专业和5门课程的成绩:  3.能够实现添加.删除.修改学生成员:(增加非法字符警 ...

  7. Python Qt GUI设计:将UI文件转换为Python文件的三种妙招(基础篇—2)

    目录 1.创建项目 2.将.ui文件生成.py文件 2.1.Eric 6编译 2.2.Python命令行编译 2.3.脚本编译 3.界面.逻辑分离思想 在开始本文之前提醒各位朋友,Python记得安装 ...

  8. 基于MATLAB的GUI设计简易计算器

    MATLAB语言基于GUI设计简易计算器 GUI界面的设置 主页----新建----应用程序----GUIDE 进入下图所示界面 点击确定,即可生成GUI设计界面. 设计计算器界面,放置按键和显示屏, ...

  9. Matlab MFCC音乐特征匹配与DTW算法识别(含GUI设计)

    目录 前言 音乐特征库的建立 批量导入音乐文件 mfcc_m.mfcc.v_melcepst分析比较 音乐识别 测试音频剪切* 录音输入音频信号 特征匹配 GUI设计 特征库音乐输入 特征库建立 录音 ...

最新文章

  1. Crunch Bang(linux)安装Webstorm上手
  2. chrome浏览器上传文件延迟_扫描识别工具Dynamic Web TWAIN使用教程:移动浏览器捕获(下)...
  3. android aidl文件分析
  4. SQL:使用备份向导、SQL命令、导出数据三种方式对已建立的数据库进行备份
  5. C# 线程知识--使用Task执行异步操作(转)
  6. 重新定义智能平板电脑 第四范式与联想达成战略合作
  7. flink check-point save-point理解
  8. MySQL create table语法中的key与index的区别
  9. Monkey随机性能压测初探(一)
  10. Hadoop入门进阶步步高(六-Hadoop1.x与Hadoop2的区别
  11. LeetCode(8) - String to Integer (atoi)
  12. 银行卡Bin查询接口
  13. 如何手动编辑art分区修改qsdk(qca9531、qca9563)无线mac地址
  14. 数据库中的内连接、自然连接、和外连接的区别
  15. python中seth和fd_Python turtle.fd方法代码示例
  16. Unity ML-Agents 之 环境的搭建,以及的 demo 测试
  17. 【JAVA】360-2021校招笔试-技术综合A卷-0911
  18. Python+Vue计算机毕业设计酒店管理系统(前台后台)i2agu(源码+程序+LW+部署)
  19. TypeError: _typeof4 is not a function,解决微信小程序报错
  20. 使用vue-preview 缩略图预览 完美解决

热门文章

  1. NX机制及绕过策略-ret2libc
  2. 百善计算机学习,党建引领学做合一,志愿服务助力乡村振兴——计算机工程学院开展“百善孝为先”主题宣传文化墙墙绘涂鸦活动...
  3. 再写顺序表(c语言实现,外加冒泡排序,二分查找)
  4. c++仿函数 functor
  5. 从一个字符串中删除另一个字符串中出现过的字符
  6. 大牛带你直击优秀开源框架灵魂,给大家安排上!
  7. 力扣(LeetCode)292. Nim游戏 巴什博奕
  8. 课后作业-结队编程项目进度-贪吃蛇
  9. 利用ssh反向代理以及autossh实现从外网连接内网服务器
  10. python学习:re模块