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高100pxwin.geometry("100旌忭檀挢x100")这里可能又有小伙伴会问了,为什么宽度又出错了?其实很简单,因为tk帮我们创建了窗口装饰器,装饰器有以下几个部分:图标、标题、最大化、最小化和关闭按钮这些装饰器占据了16个px,其实是15个,还有1个px像素点是作为窗口和装饰器之间的距离。如图红色标记部分所有代码为:#-*- coding:utf-8 -*-import tkinterwin = tkinter.Tk()win.geometry("100x100")win.update()print("当前窗口的宽度为",win.winfo_width())print("当前窗口的高度为",win.winfo_height())win.mainloop()