​本​文​由​J​z​w​a​l​l​i​s​e​r​原​创​,​发​布​在​C​S​D​N​平​台​上​,​遵​循​CC 4.0 BY-SA协​议​。​
​因​此​,​若​需​转​载​/​引​用​本​文​,​请​注​明​作​者​并​附​原​文​链​接​。​
​违​者​必​究​,​谢​谢​配​合​。​
​个​人​主​页​:​blog.csdn.net/jzwalliser

​引​入​

t​k​i​n​t​e​r​ ​的​窗​口​其​实​是​有​很​多​属​性​的​。​我​们​可​以​设​置​它​的​各​大​属​性​,​如​窗​口​大​小​,​可​调​整​大​小​,​透​明​度​等​等​等​等​等​等​,​可​好​玩​了​呢​。​

​窗​口​的​属​性​

​大​小​

其​实​我​在​上一期文章:Python tkinter(1)介绍&创建窗口里​面​已​经​提​到​了​。​叫​作​:​root.geometry("长x宽")。​其​中​,​单​位​是​“​像​素​”​。​这​里​就​复​习​一​下​吧​。​

import tkinter
root = tkinter.Tk()
root.geometry("200x200") #创建一个200x200的窗口
root.mainloop()

​位​置​

窗​口​其​实​还​可​以​设​置​它​的​位​置​。​它​和​窗​口​大​小​用​的​是​同​一​个​语​句​,​像​这​样​:​root.geometry("长x宽+X坐标+Y坐标")。​
我​们​来​一​段​代​码​:​

import tkinter
root = tkinter.Tk()
root.geometry("200x200+50+50")
#将窗口设置为200x200的大小,并将其放在屏幕上(50,50)的位置
root.mainloop()

而​坐​标​也​应​当​是​两​个​整​数​,​否​则​会​抛​出​错​误​。​不​过​,​和​窗​口​大​小​不​一​样​,​坐​标​可​以​设​置​为​负​数​。​
而​负​数​坐​标​也​是​有​讲​究​的​。​像​root.geometry("200x200+-50+50"),​窗​口​将​会​被​摆​放​在​左​边​(​-5​0​,​5​0​)​,​而​root.geometry("200x200-50+50"),​窗​口​将​会​被​摆​放​在​右​边​,​坐​标​为​(​你​的​屏​幕​宽​度​-5​0​,​5​0​)​。​

​标​题​

设​置​标​题​也​不​是​一​个​技​术​活​。​千​言​万​语​概​括​成​这​么​一​句​代​码​:​root.title("一个标题")。​

import tkinter
root = tkinter.Tk()
root.title("Hi!") #将窗口的标题设置为"Hi"
root.mainloop()

在这里插入图片描述
效​果​怎​么​样​啊​?​​​(​就​这​?​?​?​)​​

​图​标​

其​实​我​们​还​可​以​给​窗​口​设​置​图​标​呢​(​标​题​栏​左​上​角​)​。​默​认​图​标​是​一​个​蓝​蓝​的​羽​毛​。​图​标​有​两​种​方​式​去​设​置​:​iconbitmap() ​和​ ​iconphoto()。​
这​两​者​主​要​区​别​在​于​,​i​c​o​n​b​i​t​m​a​p​只​能​加​载​i​c​o​格​式​的​图​片​,​而​i​c​o​n​p​h​o​t​o​可​以​加​载​p​n​g​格​式​的​图​片​。​而​用​法​也​不​一​样​:​

import tkinter
root = tkinter.Tk()
#第一种方法:
root.iconbitmap(file="icon.ico") #这里icon.ico就是你的ico格式的图片
#第二种方法:
root.iconphoto(False,tkinter.PhotoImage(file='icon.png')) #这里icon.png就是你的的图片

发​现​了​没​?​i​c​o​n​p​h​o​t​o​其​实​有​两​个​参​数​,​第​二​个​是​图​片​,​第​一​个​是​T​r​u​e​或​F​a​l​s​e​,​默​认​为​F​a​l​s​e​。​如​果​设​为​T​r​u​e​,​那​么​图​标​也​将​应​用​于​后​面​创​建​的​所​有​顶​级​(​T​o​p​l​e​v​e​l​,​后​面​我​会​讲​到​)​窗​口​。​

​透​明​度​

废​话​不​多​说​,​没​啥​好​介​绍​的​。​直​接​上​代​码​:​root.attributes("-alpha",透明度)。​透​明​度​应​该​设​置​为​浮​点​数​,​而​不​是​整​数​,​在​这​方​面​我​经​常​搞​错​。​如​果​你​想​设​置​3​0​%​的​透​明​度​,​那​么​就​是​root.attributes("-alpha",0.3)。​

import tkinter
root = tkinter.Tk()
root.attributes("-alpha",0.3) #设置窗口的透明度为30%
#root.attributes("-alpha",30) 这种写法不会报错,但是透明度会被设置为100%,即不透明
root.mainloop()

​最​前​面​

就​是​保​持​窗​口​最​前​。​像​这​样​:​
在这里插入图片描述来​看​看​这​是​怎​么​实​现​的​:​

import tkinter
root = tkinter.Tk()
root.attributes("-topmost",True) #将窗口保持最前
root.mainloop()

你​也​可​以​随​时​取​消​窗​口​的​最​前​属​性​,​只​要​调​用​root.attributes("-topmost",False)即​可​。​

​禁​用​

你​有​体​验​过​被​禁​用​的​窗​口​吗​?​拖​不​动​,​也​无​法​将​其​缩​小​、​放​大​关​闭​等​等​。​是​不​是​很​难​受​?​

import tkinter
root = tkinter.Tk()
root.attributes("-disabled",True) #把窗口禁用掉
root.mainloop()

​工​具​模​式​

在​工​具​模​式​下​的​窗​口​,​将​不​会​有​最​小​化​、​最​大​化​按​钮​,​只​有​一​个​关​闭​按​钮​。​

import tkinter
root = tkinter.Tk()
root.attributes("-toolwindow",True) #工具窗口
root.mainloop()

在这里插入图片描述
好​不​好​看​啊​?​​​(​有​啥​好​看​的​)​​

​全​屏​

设​置​全​屏​后​,​窗​口​将​会​撑​满​整​个​屏​幕​,​任​务​栏​也​会​被​遮​住​。​

import tkinter
root = tkinter.Tk()
root.attributes("-fullscreen",True) #全屏
root.mainloop()

​最​大​化​/​最​小​化​

对​于​一​个​窗​口​来​说​,​一​般​有​三​种​状​态​:​最​大​化​、​正​常​、​最​小​化​。​

import tkinter
root = tkinter.Tk()
root.state("zoomed") #最大化
root.state("normal") #正常
root.state("icon") #最小化
root.mainloop()

​隐​藏​/​显​示​

t​k​i​n​t​e​r​窗​口​可​以​消​失​且​不​出​现​在​任​务​栏​中​,​也​可​以​恢​复​显​示​。​

import tkinter
root = tkinter.Tk()
root.withdraw() #隐藏窗口

#我们来搜搜词典:
#withdraw	英[wɪðˈdrɔː] 美[wɪðˈdrɔː]
#v.	撤退; (使)撤回,撤离; 停止提供; 不再给予; (使)退出; 提,取; 收回,撤回,撤销(说过的话); 脱离(社会);
#[例句]Tell the men to withdraw from their new position.
#告诉那些士兵从他们的新阵地上撤退。
#[其他]	第三人称单数:withdraws 现在分词:withdrawing 过去式:withdrew 过去分词:withdrawn

root.deiconify() #显示窗口
root.mainloop()

​脱​离​标​题​栏​

你​可​以​设​置​窗​口​没​有​标​题​栏​。​但​这​样​有​一​些​缺​点​:​没​有​标​题​栏​的​窗​口​需​要​手​写​窗​口​移​动​功​能​(​如​果​你​需​要​移​动​窗​口​的​话​)​,​而​且​它​不​会​出​现​在​任​务​栏​中​。​

import tkinter
root = tkinter.Tk()
root.overrideredirect(True) #脱离标题栏
root.overrideredirect(False) #找回标题栏
root.mainloop()

​可​调​整​大​小​

窗​口​可​以​调​整​长​度​,​也​可​以​调​整​高​度​。​不​过​你​可​以​禁​止​这​方​面​的​调​整​。​

import tkinter
root = tkinter.Tk()
root.resizable(True,False) #只允许调整长度
root.resizable(False,True) #只允许调整高度
root.resizable(False,False) #长度和高度都不允许调整,同时最大化按钮会被禁用
root.mainloop()

​窗​口​最​大​/​最​小​可​调​整​的​大​小​

前​面​讲​了​禁​止​调​整​窗​口​大​小​,​但​如​果​你​不​想​做​得​这​么​绝​,​那​么​还​有​下​面​这​个​法​宝​:​

import tkinter
root = tkinter.Tk()
root.maxsize(500,500) #窗口最大不能超过500×500像素
root.minsize(100,100) #窗口最小不能小于100×100像素
root.mainloop()

​总​结​

上​面​就​是​t​k​i​n​t​e​r​窗​口​大​部​分​的​功​能​啦​。​一​起​来​复​习​一​下​:​

import tkinter
root = tkinter.Tk()
root.geometry("300x300+50+50") #将窗口设置为300x300的大小,并将其放在屏幕上(50,50)的位置
root.title("Hello!") #将窗口的标题设置为"Hello"
root.iconbitmap(file="icon.ico") #这里icon.ico就是你的ico格式的图片
root.iconphoto(False,tkinter.PhotoImage(file='icon.png')) #这里icon.png就是你的的图片

root.attributes("-alpha",0.3) #设置窗口的透明度为30%
root.attributes("-topmost",True) #将窗口保持最前
root.attributes("-disabled",True) #把窗口禁用掉
root.attributes("-toolwindow",True) #工具窗口
root.attributes("-fullscreen",True) #全屏

root.state("zoomed") #最大化
root.state("normal") #正常
root.state("icon") #最小化

root.withdraw() #隐藏窗口
root.deiconify() #显示窗口

root.overrideredirect(True) #脱离标题栏
root.overrideredirect(False) #找回标题栏

root.resizable(True,False) #只允许调整长度
root.resizable(False,True) #只允许调整高度
root.resizable(False,False) #长度和高度都不允许调整,同时最大化按钮会被禁用

root.maxsize(500,500) #窗口最大不能超过500×500像素
root.minsize(100,100) #窗口最小不能小于100×100像素
root.mainloop()

而​大​部​分​的​函​数​,​如​果​你​不​给​参​数​,​那​么​这​个​函​数​将​会​返​回​当​前​状​态​。​

我​们​下​一​期​再​见​!​
记​得​一​键​三​连​哦​!​

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐