Python设置Tkinter窗口居中和大小位置标题

看代码吧,一目了然。
import tkinter
top = tkinter.Tk()
#这里四个参数分别为:宽、高、左、上
top.geometry(“500×300+750+200”)
top.title(“窗口标题”)
top.mainloop()
geometry()参数的含义:
“窗口宽x窗口高+窗口位于屏幕x轴+窗口位于屏幕y轴”

geometry()参数的含义:
“窗口宽x窗口高+窗口位于屏幕x轴+窗口位于屏幕y轴”

#!/usr/bin/python
#-*-coding:utf-8 -*-

import tkinter
top = tkinter.Tk()
#这里四个参数分别为:宽、高、左、上
top.geometry("500x300+750+200")

top.title("www.tianqiweiqi.com")

top.mainloop();

接着来实现真正的窗口居中

我们要修改窗口位置和修改窗口大小,要用到是tk对象提供的geometry方法

该方法的用法是geometry(字符串),这个字符串格式为:

“窗口宽x窗口高+窗口位于屏幕x轴+窗口位于屏幕y轴”

当然,我们可以只设置窗口大小或者是只设置窗口的x轴和y轴。

例如geometry(“100×100”)或者geometry(“+10+10”)

要想设置屏幕居中,我们还需要获得屏幕大小(即分辨率)

我们可以通过tk对象提供的winfo_screenwidth方法和winfo_screenheight方法来获得屏幕宽度和高度(分辨率)

窗口居中在屏幕的算法如下:

屏幕宽 – 窗口宽 = 窗口两边的宽度(记得是两边,仔细想想)

然后我们除于一半得到屏幕左边的宽度,这就是我们窗口位于屏幕x轴开始的位置。

看代码仔细想就能理解:

#-*- coding:utf-8 -*-
import tkinter
win = tkinter.Tk()
sw = win.winfo_screenwidth()
#得到屏幕宽度
sh = win.winfo_screenheight()
#得到屏幕高度
ww = 100
wh = 100
#窗口宽高为100
x = (sw-ww) / 2
y = (sh-wh) / 2
win.geometry("%dx%d+%d+%d" %(ww,wh,x,y))
win.mainloop()

如果设置标题用win.title(“窗口标题”),运行如下:

注意:top.geometry(“500×300+750+200”)

这里是小写字母x,而不是大写X或乘号叉号。

打错了,出提示如下错误信息:

_tkinter.TclError: bad geometry specifier "200×100"

也可以写个center_window函数封装一下:

    def center_window(self, cont, width, height):
        screenwidth = cont.winfo_screenwidth()
        screenheight = cont.winfo_screenheight()
        size = "%sx%s+%s+%s" % (
            width, height, (screenwidth - width) / 2,
            (screenheight - height) / 2)
        return size
#!/usr/bin/env python
#coding=utf-8
 
import tkinter  as tk
from tkinter    import ttk
 
def get_screen_size(window):
    return window.winfo_screenwidth(),window.winfo_screenheight()
 
def get_window_size(window):
    return window.winfo_reqwidth(),window.winfo_reqheight()
 
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 = tk.Tk()
root.title('测试窗口')
center_window(root, 300, 240)
root.maxsize(600, 400)
root.minsize(300, 240)
ttk.Label(root, relief = tk.FLAT, text = '屏幕大小(%sx%s)\n窗口大小(%sx%s)' % (get_screen_size(root) + get_window_size(root))).pack(expand = tk.YES)
tk.mainloop()

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注