了解窗体有什么属性
窗体有属性可以设置,我们可以用 keys() 方法来查看一下。
以下代码中 print(root.keys()) 功能就是在终端输出窗体window可以设置的属性。完整代码如下:
import tkinter as tk #创建一个窗口 window=tk.Tk() #输出窗口的属性 print(window.keys())#显示窗口 window.mainloop()
输出结果:
['bd', 'borderwidth', 'class', 'menu', 'relief', 'screen', 'use', 'background', 'bg', 'colormap', 'container', 'cursor', 'height', 'highlightbackground',
'highlightcolor', 'highlightthickness', 'padx', 'pady', 'takefocus', 'visual', 'width']
看上去窗体有很多属性,但是,我们平时常用的属性值就那么几个,其它不太常用的属性设置,我们可以暂时不用管它们。
用config()方法设置窗体属性
为窗体属性以及组件(控件)属性设置的方法有2种。第1种方法是用config() 或 configure()
window.config(bg='yellow',cursor='hand2',width=200,height=100) window.configure(bg='yellow',cursor='hand2',width=200,height=100)
以上两句代码,作用是一样的,(以后就我就采用config()方法)上面代码作用就是让窗口背景设置为黄色,窗口范围内的鼠标形态变成手形,宽度为200,高度为100。
全部代码,如下:
import tkinter as tk #创建一个窗口 window=tk.Tk() #输出窗口的属性 print(window.keys()) window.config(bg='yellow',cursor='hand2',width=200,height=100) window.configure(bg='yellow',cursor='hand2',width=200,height=100) #显示窗口 window.mainloop()
显示效果如下:
用config()方法,可以一次为1个或多个属性进行设置。
通过字典键设置窗体属性
通过字典设置窗体属性,只可为一个属性单独设置。如:
window['bg']='yellow' window['cursor']='hand2' window['width']=200 window['height']=100
如果为一个不存在的属性设置,就会被 系统报TclError 错误。
获取窗体属性之方法1
将上面讲解的用字典键来设置窗体方法改一下,去=号,不赋值,就可以得到属性值。如:
window['height'] # 获取窗体高度 window['bg'] # 获取窗体背景颜色 window['cursor'] # 获取窗体的鼠标样式
我们可以把获取的属性性赋值给别的变量,或者直接打印出来。
import tkinter as tk #创建一个窗口 window=tk.Tk() #输出窗口的属性 print(window.keys()) #window.config(bg='yellow',cursor='hand2',width=200,height=100) #window.configure(bg='yellow',cursor='hand2',width=200,height=100) window['height']=300 window['bg']='red' window['cursor']='hand2' print(window['height']) print(window['bg']) print(window['cursor']) #显示窗口 window.mainloop()
上面代码中,我们可以用print把窗体的属性值打印出来。
注意,如果窗体没有设定属性值,用这种方法,无法得到正确的值。我们把3,4,5句代码去除,再运行一下,就会发现输出结果提示错误。
获取窗体属性值之方法2
第二种方法,是用cget() 方法来获取窗体属性值 。如:
window.cget('height') window.cget('bg') window.cget('cursor')
同样,我们也可以把获取的属性性赋值给别的变量,或者直接打印出来。
import tkinter as tk #创建一个窗口 window=tk.Tk() #输出窗口的属性 print(window.keys()) #window.config(bg='yellow',cursor='hand2',width=200,height=100) #window.configure(bg='yellow',cursor='hand2',width=200,height=100) window['height']=300 window['bg']='red' window['cursor']='hand2' #print(window['height']) #print(window['bg']) #print(window['cursor']) print(window.cget('height')) print(window.cget('bg')) print(window.cget('cursor')) #显示窗口 window.mainloop()
上面代码中,我们可以用print把窗体的属性值打印出来。
注意,这种方法跟第1种方法一样,如果窗体没有设定属性值,就无法得到正确的属性值。我们把第3句代码去除,再运行一下,就会发现,输出结果提示错误。
总结:上述的2种设置属性方法和2种设置属性方法对于后面要讲解的组件(在其它的编程语言里,组件也叫控件),也一样管用。
其它方法获取窗体的宽和高
window.winfo_width() # 获取窗体的宽 window.winfo_height() # 获取窗体的高
我们用下面的代码输出窗体宽和高
from tkinter import * window=Tk() window.geometry('300x150+888+444') # 设置窗体大小和位置 window.update() # 刷新窗体 print(window.winfo_width()) # 输出窗体宽 print(window.winfo_height()) # 输出窗体高 window.mainloop()
注意第4行代码,这是刷新窗体语句,缺少这句,输出的结果不正确,一定要加上这行代码才行。
去除第3行设置窗体大小的代码,一样可以得到窗体的宽和高。
其它方法获取窗体的位置
window.winfo_x() # 获取窗体左边距 window.winfo_y() # 获取窗体上边距
用下面的代码输出窗体的位置:
from tkinter import * window=Tk() window.geometry('300x150+888+444') # 设置窗体大小和位置 window.update() # 刷新窗体 print(window.winfo_x()) # 输出窗体左边距 print(window.winfo_y()) # 输出窗体上边距 window.mainloop()
tkinter窗体居中显示的代码
设置窗体位置的代码如:
root.geometry('±100±200')
第1个参数为:+数值,表示窗口左边离屏幕左边的距离
-数值,表示窗口右边离屏幕右边的距离
第2个参数为:+数值,表示窗口上边离屏幕上边的距离
-数值,表示窗口下边离屏幕下边的距离
大家自行把上面代码的第三行代码改成下面的其中一条代码,查看窗体在屏幕的不同位置。
window.geometry('+100+200') # 窗体在屏幕左上角 window.geometry('-100-200') # 窗体在屏幕右下角 window.geometry('+100-200') # 窗体在屏幕左下角 window.geometry('-100+200') # 窗体在屏幕右上角
但在实际的程序编写中,让窗体居中显示可能更有实用性。代码如下:
a,b=300,150 # a为窗体宽度,b为窗体的高度 c=(window.winfo_screenwidth()-a)/2 # (屏幕宽度-窗体宽度)/2 d=(window.winfo_screenheight()-b)/2 # (屏幕高度-窗体高度)/2 window.geometry('%dx%d+%d+%d' % (a,b,c,d)) # c为窗口左边离屏幕左边的距离,d为窗口上边离屏幕上边的距离
以上tkinter窗口居中显示代码你可以收藏起来,使用时,只要改一下a,b的数值设置就可以行了。
解释:
root.geometry('%dx%d+%d+%d' % (a,b,c,d)) 这一代码需要你懂得python的字符串格式化知识,这里是使用%操作符来格式化字符串。
root.winfo_screenwidth() # 为获取屏幕的宽度,括号不能省
root.winfo_screenheight() # 为获取屏幕的高度,括号不能省。