用Tkinter打造GUI开发工具(5)Toplevel弹出窗口

117 篇文章 122 订阅
116 篇文章 46 订阅

用Tkinter打造GUI开发工具(5)Toplevel弹出窗口
Tkinter的root.Toplevel()方法可以创建一个弹出窗口。Toplevel()方法的含义是建立在Tk()主窗口上面的顶层窗口,我们本书称为弹出窗口PopWindow。因为它为我们提供了很多高级功能,例如独立窗口工具栏,信息气泡等等都是用Toplevel()方法实现的,就像大窗口中弹出的小窗口。
Tkinter只有一个 Tk()主窗口root,可以建立无数个Toplevel()窗口PopWindow。
Toplevel()窗口拥有Tk()主窗口几乎所有方法,唯一不同的方法是destroy()方法。
Toplevel()窗口的PopWindow.destroy()方法,只销毁所有在PopWindow窗口上建立的小部件,和PopWindow窗口本身,即关闭PopWindow窗口。不影响Tk()主窗口和其它的PopWindow窗口。
Tk()主窗口的root.destroy()方法,会上删除所有Tkinter的部件,包括所有的Toplevel()窗口和Tk()主窗口。会停止mainloop()方法,终止Tkinter程序运行。
Toplevel()窗口的方法同Tk()主窗口方法,前面都介绍过了,这里就不多说了。下面看一个示例,读者体会关闭Tk窗口,和popWindow窗口,Tkinter程序会有什么不同。

# -*- coding: utf-8 -*-
import  tkinter  as  tk   #导入Tkinter模块,仅用于Python3
root =tk.Tk()  #建立Tkinter主窗口root
root.title(' Tk窗口')
root.geometry('{}x{}+{}+{}'.format(300, 200, 100, 200)) #改变窗口位置和大小
root.attributes('-topmost',1)  #参数1,设置顶层窗口,覆盖其它窗口。

popWindow=tk.Toplevel(root)
popWindow.title('Toplevel窗口')
popWindow.geometry('{}x{}+{}+{}'.format(300, 200, 450, 200)) #改变窗口位置和大小
popWindow.attributes("-toolwindow", 1)  #参数1,设置工具栏样式窗口。
popWindow.attributes('-topmost',1)  #参数1,设置顶层窗口,覆盖其它窗口。

popWindow2=tk.Toplevel(root)
popWindow2.title('Toplevel窗口2')
popWindow2.geometry('{}x{}+{}+{}'.format(300, 200, 800, 200)) #改变窗口位置和大小
popWindow2.attributes('-topmost',1)  #参数1,设置顶层窗口,覆盖其它窗口。

root.mainloop()  #Tkinter的mainloop()方法

在这里插入图片描述
Toplevel()窗口的方法同Tk()主窗口方法,我们不重复介绍了。下来要解决程序设计中经常遇到的问题。
设置窗口大小的方法有了,如果不改变窗口到小,仅仅将窗口自动在屏幕中居中的函数。

#自动移动窗口到屏幕中央       
def setCenter(window,w=0,h=0):
    ws = window.winfo_screenwidth()  #获取屏幕宽度(单位:像素)
    hs = window.winfo_screenheight()  #获取屏幕高度(单位:像素) 
    if (w==0  or  h==0):
        w = window.winfo_width()   #获取窗口宽度(单位:像素)
        h = window.winfo_height()  #获取窗口高度(单位:像素)
    x = int( (ws/2) - (w/2) )
    y = int( (hs/2) - (h/2) )
    window.geometry('{}x{}+{}+{}'.format(w, h, x, y))

完整的演示程序如下:

# -*- coding: utf-8 -*-
import  tkinter  as  tk   #导入Tkinter模块,仅用于Python3

#移动窗口到屏幕中央       
def setCenter(window,w=0,h=0):
    ws = window.winfo_screenwidth()
    hs = window.winfo_screenheight()
    if (w==0 or h==0):
        w = window.winfo_width()   #获取窗口宽度(单位:像素)
        h = window.winfo_height()  #获取窗口高度(单位:像素)
    x = int( (ws/2) - (w/2) )
    y = int( (hs/2) - (h/2) )
    window.geometry('{}x{}+{}+{}'.format(w, h, x, y))

root =tk.Tk()  #建立Tkinter主窗口root
root.title(' Tk窗口')
root.geometry('{}x{}+{}+{}'.format(300, 200, 100, 200)) #改变窗口位置和大小
root.attributes('-topmost',1)  #参数1,设置顶层窗口,覆盖其它窗口。

popWindow=tk.Toplevel(root)
popWindow.title('Toplevel窗口')
popWindow.geometry('{}x{}+{}+{}'.format(300, 200, 450, 200)) #改变窗口位置和大小
popWindow.attributes("-toolwindow", 1)  #参数1,设置工具栏样式窗口。
popWindow.attributes('-topmost',1)  #参数1,设置顶层窗口,覆盖其它窗口。

setCenter(popWindow)  #把popWindow窗口移动到屏幕中央

root.mainloop()  #Tkinter的mainloop()方法

程序运行后,通过 setCenter(popWindow)语句,把popWindow窗口移动到屏幕中央。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荷蒲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值