教你用Python获得Tkinter(TK)窗口的大小(宽高)
1、很多小伙伴可能会问,为什么要获得tk窗口的大小,大小多少可以自己设置。为什么还要通过程序来获得呢?
来看看小编写的这个,动态获得tk窗口宽高像素大小。
如图

2、上图就是通过tk窗口事件来进行动态的打印窗口的宽高。
那么,怎么获得窗口的大小宽高呢?
我们先创建一个tk窗口
#-*- coding:utf-8 -*-
import tkinter
#小编这里是python3,使用python2的小伙伴把tkinter换成Tkinter即可,否则报错哦
win = tkinter.Tk()
win.mainloop()
这样我们就创建了一个tk窗口,尽管这个窗口什么都没有。

3、我们要用到的方法是tk对象提供的winfo_width和winfo_height,从字面上我们都可以理解:winfo_width获得窗口的宽度,winfo_height获得窗口的高度。
以上两个方法都是无参方法,通过返回值我们可以获得窗口的宽高。
OK,我们插入代码
print("当前窗口的宽度为",win.winfo_width())
print("当前窗口的高度为",win.winfo_height())

4、这里很多小伙伴就会问了,为什么是1?窗口的宽高绝对不是1。
没错,但是程序并没有做错,我们只是少了点什么?我们需要刷新窗口数据,如果小伙伴经常使用tk这个图形库,就会知道,我们使用winfo_width和winfo_height得到的宽高其实是tk初始化时的一个值。
此时我们调用update方法,刷新win窗口。
win.update()
快看,是不是成功获得了窗口的宽高?

5、我们可以自定义窗口大小来看数据是否正确。
例如小编这里设置窗口大小 = 100 x 100,即宽100px高100px
win.geometry("100x100")
这里可能又有小伙伴会问了,为什么宽度又出错了?
其实很简单,因为tk帮我们创建了窗口装饰器,装饰器有以下几个部分:图标、标题、最大化、最小化和关闭按钮
这些装饰器占据了16个px,其实是15个,还有1个px像素点是作为窗口和装饰器之间的距离。
如图红色标记部分
所有代码为:
#-*- coding:utf-8 -*-
import tkinter
win = tkinter.Tk()
win.geometry("100x100")
win.update()
print("当前窗口的宽度为",win.winfo_width())
print("当前窗口的高度为",win.winfo_height())
win.mainloop()
