一、概述

Toplevel 组件可以提供单独的容器

二、代码

import tkinter as tk# 主顶层
win = tk.Tk()
win.title("主窗口")
win.geometry("400x200")
tk.Label(win, text="Toplevel-主窗口").pack(pady=20)# 子顶层1 依赖于主窗口;如果主窗口关闭,子顶层也被关闭
w1 = tk.Toplevel(win)
w1.title("w1 in win")
w1.geometry("300x150")
tk.Label(w1, text="子窗口1依托于主窗口").pack(padx=20, pady=20)# 子窗口2 临时顶层,画于主窗口顶部,如果主窗口图标最小化,子顶层最小化
w2 = tk.Toplevel(win)
w2.title("w2 in win")
w2.geometry("300x150")
tk.Label(w2, text="子窗口2依托于主窗口").pack(padx=20, pady=20)
w2.transient(win)# 子窗口3
w3 = tk.Toplevel(win, borderwidth=5, bg='lightyellow')
tk.Label(w3, text='没有装饰的窗口', bg='red', fg='white').pack(padx=20, pady=20)
w3.overrideredirect(True)
w3.geometry('200x80+200+200')win.mainloop()

效果

三、解释

  1. 根窗口:创建GUI必须使用的win=tkinter.Tk()创建
  2. 子窗口1win1 = tkinter.Toplevel(win)表明win1依托于win
  3. 子窗口2win2 = tkinter.Toplevel(win),同时,win2.transient(win)子窗口2与根窗口绑定,跟窗口最小化,子窗口2最小化,并且总显示在根窗口最前面。
  4. 子窗口3win3=tkinter.Toplevel(win)win3.overrideredirect(True)创建的窗口不能被缩放或拖动

四、举一反三

代码

import tkinter as tk# 主顶层
win = tk.Tk()
win.title("主窗口")
win.geometry("400x200")
tk.Label(win, text="Toplevel-主窗口").pack(pady=20)# 子顶层1 依赖于主窗口;如果主窗口关闭,子顶层也被关闭
w1 = tk.Toplevel()
w1.title("w1 in win")
w1.geometry("300x150+300+300")
tk.Label(w1, text="子窗口1依托于主窗口").pack(padx=20, pady=20)
w1.withdraw()# 子窗口2 临时顶层,画于主窗口顶部,如果主窗口图标最小化,子顶层最小化
w2 = tk.Toplevel()
w2.title("w2 in win")
w2.geometry("300x150+300+300")
tk.Label(w2, text="子窗口2依托于主窗口").pack(padx=20, pady=20)
# w2.transient(win)
w2.withdraw()# 子窗口3
w3 = tk.Toplevel(borderwidth=5, bg='lightyellow')
w3.geometry('200x80+300+300')
w3.overrideredirect(True)
tk.Label(w3, text='没有装饰的窗口', bg='red', fg='white').pack(padx=20, pady=20)
w3.withdraw()frame = tk.Frame(win)
frame.pack()
btn1 = tk.Button(frame, text="子窗口1", command=lambda : w1.deiconify())
btn1.pack(side="left", padx=5)
btn2 = tk.Button(frame, text="子窗口2", command=lambda : w2.deiconify())
btn2.pack(side="left", padx=5)
btn3 = tk.Button(frame, text="子窗口3", command=lambda : w3.deiconify())
btn3.pack(side="left", padx=5)win.mainloop()

效果

五、总结与反思

tkinter.toplevel()可以创建新的顶层容器,拓展了我们开发GUI更多的功能。学习的过程多调试,掌握每种顶层窗口的作用,在学习的过程,我们可以把简单的功能分别设计到各自的子窗口中,简化我们开发的难度,以及简化窗口布局的难度。
难点:

w3.overrideredirect(True)
w2.transient(win)

对上述代码的理解,多调试。

六、对Toplevel参数理解参考如下

  1. TKINTER TOPLEVEL
  2. Tkinter 之TopLevel顶级窗口
  3. Tkinter 组件详解(十九):Toplevel
  4. Tk(根窗口)和 Toplevel(顶级窗口)的方法汇总

tkinter:Toplevel相关推荐

  1. python 提示框如何顶层显示_Python Tkinter Toplevel顶层窗口

    Toplevel小部件用于创建和显示由窗口管理器直接管理的顶层窗口.顶层窗口小部件可能有也可能没有父窗口. 当python应用程序需要在新窗口中表示一些额外信息,弹出窗口或小组件组时,将使用tople ...

  2. Python ---(十九)Tkinter窗口组件:Toplevel

    上一篇:Python -(十八)Tkinter窗口组件:PanedWindow The Tkinter Toplevel Widget ##简介 Toplevel(顶级窗口)组件类似于 Frame 组 ...

  3. python中ttk和tkinter_Python tkinter与ttk日历

    我正在使用 this代码在我的Tkinter上创建一个简单的日历.当我在主根窗口上放置日历时,日历显示正常.因此,我决定放置另一个按钮,它将创建一个Tkinter顶层窗口并在顶层窗口上放置另外一个日历 ...

  4. gui - tkinter 开发

    GUI 用户交互界面 tkinter 介绍 tkinter python自带的gui库,对图形图像处理库tk的封装 其他gui:pythonwin,wxpython,pyQT.. 概念介绍 组件:组成 ...

  5. Python使用tkinter打造自定义对话框完整代码

    问题来源:前一阵发过一个技术文章Python编写抽奖式随机提问程序,其中有个弹出式对话框,好像上海科技大学宋老师在群里当时问了一句对话框中中奖姓名是否能显示的大一些,如图: 当时记得标准的tkinte ...

  6. Python+tkinter+pillow实现屏幕任意区域截图

    基本思路:首先获取并显示全屏幕截图,然后在全屏幕截图上响应鼠标左键按下和抬起事件,最后进行二次截图. import tkinter import tkinter.filedialog import o ...

  7. TK 设置tkinter窗口的置顶属性,保持最上层

    要使窗口在tkinter应用程序中停留在其他窗口之前,请使用 attributes('-topmost', 'true') import tkinter as tk from tkinter impo ...

  8. python+tkinter创作老黄历,窗口化显示:择吉,五行,财福喜神

    为了学习python,训练数据处理的能力,突发奇想,自己做一个老黄历进行查询. 仅限于交流学习,不得商用哈,数据是下载别人的,所以友善使用,学到就是赚到啦,创作不易转载请注明链接和出处 黄历数据下载地 ...

  9. python读取摄像头或者视频文件、并在gui中实时显示_python:tkinter显示来自网络摄像头的视频并执行QR扫描...

    我一直在尝试创建一个tkinter顶级窗口,用于流式传输视频表单摄像头并执行QR扫描.我从SO和another code得到这个QR扫描代码,它只是从网络摄像头更新图像,而不是在tkinter标签上流 ...

最新文章

  1. android 6.0 获取手机号,头条小程序获取手机号码,回调未执行,导致无法获取手机号码...
  2. html得到画布的颜色的值,从画布上获取像素颜色
  3. wget安装Jenkins
  4. 把存储过程结果集SELECT INTO到临时表
  5. 【一步解决】eclipse jee左边的项目栏不见了
  6. 对Docker镜像layer的理解
  7. Letters比赛第六场1002 Babelfish解题报告
  8. urllib.error.URLError: <urlopen error [SSL: WRONG_VERSION_NUMBER] wrong version number 成功解决
  9. opencv数字图像处理(1) - 灰度变换函数
  10. 明华RD读卡器校验密码问题
  11. Latex 安装包 metropolis
  12. 【HTML/JS】百度地图javascriptAPI点击地图得到坐标(拾取坐标) 标签: 百度地图坐标
  13. 【自动升级后的错误】如何停止腾讯会议自动升级
  14. 共享计算机如何建快捷方式,创建快捷方式的几种方法
  15. CUDA编程1--GPU内存模型
  16. R语言 substitute
  17. HD5450显卡驱动 for mac 官方免费版
  18. linux 运行 epics,EPICS的安装.pdf
  19. 创维电视linux系统怎么连接wifi,创维电视怎么连接wifi
  20. 随机数生成(一):均匀分布

热门文章

  1. 谈性能测试-FPS流畅度
  2. C语言库函数— qsort () 详解
  3. 【模板】FHQ Treap
  4. java截取视频空间的中间段
  5. 二进制编译安装启动Redis时报权限不够(redis.service: Failed at step EXEC spawning xxx: Permission denied)
  6. Python中的self,类中的self?
  7. 大学生毕业后想成为产品经理?那你得先从以下几个方面入手!
  8. Windows上CLion配置和使用教程
  9. 虚拟主机服务器放在哪里,云虚拟主机的目录在哪里
  10. matlab中如何转动三维图_MATLAB小技巧之:绕任意空间轴旋转三维图形