记录实用有价值的内容

tkinter 窗口居中显示

tkinter 没有直接设置窗口居中的方法,不过我们可以自己实现一个,具体代码如下:


# -*- coding: utf-8 -*-
# 窗口居中显示演示

import tkinter as tk

window = tk.Tk()
window.title('设置窗口居中显示')

label = tk.Label(window, text="Hello, World")
label.pack(fill=tk.BOTH, expand=1)


def set_window_center(window, width=None, height=None, minsize=True, resize=False):
    """设置窗口宽高及居中"""
    # 获取窗口宽高
    if width == None or height == None:
        # 宽高为 None 时取窗口自身大小
        window.update_idletasks() # 获取窗口宽高之前需要先刷新窗口
        window.withdraw() # 隐藏
    if width is None:
        width = window.winfo_width()
    if height is None:
        height = window.winfo_height()

    # 获取屏幕宽高
    w_s = window.winfo_screenwidth()
    h_s = window.winfo_screenheight()

    # 计算 x, y 位置
    x_co = (w_s - width) / 2
    y_co = (h_s - height) / 2

    # 设置窗口宽高和居中定位
    window.geometry("%dx%d+%d+%d" % (width, height, x_co, y_co))
    window.deiconify() # 显示
    # 是否设置窗口最小尺寸
    if minsize:
        window.minsize(width, height)
    # 是否可调整大小
    if resize:
        window.resizable(True, True)
    else:
        window.resizable(False, False)


set_window_center(window, 400, 400) # 设置宽高均400居中显示
set_window_center(window) # 不设置宽高,按照窗口实际的大小尺寸居中显示

window.mainloop()


上一篇:tkinter 控件 Label 更新

下一篇:python2 与 python3 中 tkinter 的变化