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()
