欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python的tkinter窗口位置\坐标\大小等知识(自用笔记)

发布时间:2025/4/5 python 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python的tkinter窗口位置\坐标\大小等知识(自用笔记) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

大家都知道tkinter库中有很多控件和主窗口,因此这些控件和主窗口都有对应的屏幕坐标的信息。因此我们可以分别进行介绍。
他是以电脑屏幕的左上角为原点,向右是x,向下是y的这样的一个坐标系

一、关于主窗口的介绍:

我们见的比较多的命令如下:

window.geometry("300x200+100+50")

这是什么意思呢?

其实:第一个(300)是指窗口的宽度 x 第二个窗口(200)的高度 + 第三个窗口(100)左上点离左屏幕边界距离 + 第四个窗口(50)左上点离上面屏幕边界距离。

(1)窗口属性设置

在上面程序的基础上,在root = Tk()和root.mainloop()之间添加下面的代码以在窗口中添加元素

窗口标题: window.title("title_a")

添加窗口图标:window.iconbitmap(icon_file) #icon_file就是一个.ico的图标文件,使用绝对或相对路径

设置窗口大小:

window.geometry("x_WIDTH x x_HEIGHT") #其中将_WIDTH替换为窗口宽度,将_HEIGHT替换为窗口高度 设置窗口在屏幕上的位置: window.geometry("+X+Y") #X/Y表示以屏幕左上角为顶点的窗口的坐标 #或者是 window.geometry("x_WIDTH x x_HEIGHT+X+Y")

(2)常用的事件处理函数:

刷新窗口状态: window.update()

销毁窗口: window.destroy()

自动触发事件: window.after(sec,command) #表示多少秒以后自动执行command

置顶窗口: window.wm_attributes('-topmost',1)

隐藏窗口外部: window.overrideredirect(True)

设置最大的窗口: window.maxsize(600, 400)

设置最小的窗口: window.minsize(300, 240)

设置窗口是否可以缩放(两种方法):

window.resizable(width=False, height=False)#禁止改变窗口大小window.resizable(0, 0) # 设置窗口大小不可变

(3)获取窗口的方法

winfo_x() 方法获得窗口的x坐标,
winfo_y() 方法获得窗口的y坐标
winfo_width() 方法获得窗口的宽度
winfo_height() 方法获得窗口的高度
以上四个方法都是无参方法,通过返回值我们可以获得窗口的宽高。

from tkinter import *def go():txt = '窗口的左上角坐标为:(%s,%s)\n窗口的高度为:%s窗口的宽度为:%s' \% (root.winfo_x(),root.winfo_y(),root.winfo_width(),root.winfo_height())label1.configure(text=txt)root.after(1,go)root = Tk() root.geometry("300x200+100+50") label1 = Label(root) label1.pack(expand=YES) go() root.mainloop()

运行结果如下:

(4)一个很重要的知识点

我们使用上述的方法得到的位置和宽高,其实是tk初始化时的一个值。因此在初始化的时候默认都是1,如果需要获取准确的位置和大小信息 此时我们调用update方法,刷新win窗口。

运行脚本如下:

import tkinter win = tkinter.Tk() win.geometry("100x100") print("初始化的窗口的宽度和宽度为 %s * %s" % (win.winfo_width(),win.winfo_height())) win.update() print("update后的窗口的宽度和宽度为 %s * %s" % (win.winfo_width(),win.winfo_height())) win.mainloop()

(5)常用的一些位置处理函数

设置窗口最大化

#设置窗口最大化: #方法一 root = Tk() w, h = root.maxsize() root.geometry("{}x{}".format(w, h)) #看好了,中间的是小写字母x #方法二 root = Tk() w = root.winfo_screenwidth() h = root.winfo_screenheight() root.geometry("%dx%d" %(w, h)) #方法三 root = Tk() root.attributes("-fullscreen", true)

设置居中显示

def center_window(root, width, height):screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)print(size)root.geometry(size)root.update()print(root.winfo_x())

调用脚本:

import tkinter as tk root = tk.Tk() root.title('测试窗口') center_window(root, 500, 340) root.mainloop()

二、关于控件的位置介绍

其实跟主窗口的访问方式类似,主要是要找到对应的方法和函数。

import tkinter as tkdef center_window(root, width, height):screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)root.geometry(size)root.update()def go():txt = 'Label1控件的位置信息如下:%s' % label1.winfo_geometry()label2.configure(text=txt)root.after(1,go)root = tk.Tk() root.title('测试窗口') center_window(root, 500, 340) label1 = tk.Label(root, text='测试用途的Label控件') label1.pack(expand=tk.YES) label2 = tk.Label(root) label2.pack() go() root.mainloop()

主要用到的函数为:label1.winfo_geometry()

运行的效果如下:

具体参考:https://blog.csdn.net/dhjabc_1/article/details/105428853

总结

以上是生活随笔为你收集整理的python的tkinter窗口位置\坐标\大小等知识(自用笔记)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。