赞
踩
今天我教大家做tkinter窗口美化
第一章 · tkinter内部美化功能
可以通过调整第二个值来设置透明度
透明度数值: 0 ~ 1
- from tkinter import *
-
- root = Tk()
- root.attributes("-alpha",0.5)
-
- # 开始主窗口循环
- root.mainloop()
效果图:
显然易见,窗口已经透明了一半了
最后再补充一下,数值越大,越不透明
其实这个不是通过一个内置函数直接搞定的,道理是先获取屏幕的高度和宽度,在通过计算,把窗口居中,关键还在geometry这个函数
我们先获取屏幕的高度和宽度:
- from tkinter import *
-
- print(Tk().winfo_screenwidth())
- print(Tk().winfo_screenheight())
会返回你的窗口高度和宽度
我们把窗口居中的代码:
- from tkinter import *
-
- root = Tk()
- width = 100
- height = 100
-
- root.geometry(
- f"{str(width)}x{str(height)}+"+
- f"{int((root.winfo_screenwidth() - width) / 2)}+"+
- f"{int((root.winfo_screenheight() - height) / 2)}"
- )
-
- # 开始主窗口循环
- root.mainloop()
运行你就会发现,窗口移动到了屏幕中间
这个其实很简单,用iconify就行了
代码:
- from tkinter import *
-
- root = Tk()
-
- # 窗口最小化
- root.iconify()
-
- # 开始主窗口循环
- root.mainloop()
运行就会发现,窗口没有出现在屏幕上,但在任务栏却有显示
除了iconify,也可以用state
那么,问题来了,怎么用代码取消最小化呢?
其实还是很简单,一行代码直接搞定
- from tkinter import *
-
- root = Tk()
-
- # 窗口最小化
- root.iconify()
-
- # 取消最小化,即为显示窗口
- root.state(NORMAL)
-
- # 开始主窗口循环
- root.mainloop()
结果是,窗口闪了一下,然后出现在屏幕上,如果没有iconify,那么窗口会出现在屏幕上,不会有任何变化
这个要用到tkinter的state,
还有一点要说明,即使你已经用代码表示窗口得大小不能调整,他依旧会把窗口最大化
关于窗口大小调整的设置,请往下看
state函数的形参有:
iconic (最小化窗口)
normal (显示窗口,取消最小化)
withdrawn (撤回此窗口,即关闭)
zoomed (最大化窗口)
相信大家不用我货都已经明白了对吧?
既然如此,我就不上代码了
额额,好吧,代码还是要给的
- from tkinter import *
-
- root = Tk()
-
- # 最大化窗口
- root.state("zoomed")
-
- # 开始主窗口循环
- root.mainloop()
运行就会发现,窗口占满了整个屏幕!
额,好吧,还有个任务栏呢
如果要缩小成原来的大小,用取消最小化的方法也能行
一行代码直接搞定!
但,没有了标题栏,也就无法移动窗口了
但我们可以绘制一个标题栏,实现绘制标题栏,
至于详细代码,请看第二章
删除标题栏代码:
- from tkinter import *
-
- root = Tk()
-
- # 删除标题栏
- root.overrideredirect(True)
- # True 删除标题栏,False 不删除标题栏
-
- # 开始主窗口循环
- root.mainloop()
运行之后,标题栏不见了,窗口只能在原始位置不能移动
首先,调整初始大小的函数不用我说了吧?
我们来谈一谈窗口的后期调整
1.禁止手动调整大小
这个很简单, 就是用resizable
resizable的第一个参数调整宽度,第二个调整高度
如果为True,则窗口的某一边不能调整大小、拉伸窗口
如果形参为True、True,则都可以拉伸
root.resizable(True,True)
root.resizable(True,True)
如果形参为False、True,则宽度能拉伸
root.resizable(False,True)
root.resizable(False,True)
如果形参为True、False,则高度能拉伸
root.resizable(True,False)
root.resizable(True,False)
如果形参为False、False,则都不能拉伸
root.resizable(False,False)
root.resizable(False,False)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。