最近闲来无事又开始研究tkinter,准备做一个系列来记录一下
import tkinter as tk
# 创建 Tkinter 窗口
root = tk.Tk()
# 宽度
width = 1000
# 高度
height = 600
# 获取屏幕宽度和高度
screenWidth = root.winfo_screenwidth()
screenHeight = root.winfo_screenheight()
# 计算窗口显示时的左上角坐标
X = (screenWidth - width) / 2
Y = (screenHeight - height) / 2
size = '%dx%d+%d+%d' % (width, height, X, Y)
root.geometry(size) # 设置窗口高、宽、左上角坐标
if __name__ == '__main__':
# 窗口主循环
root.mainloop()
运行一下
当然到这一步基本还是那个可以结束了。
但是对于吃毛求疵的我总感觉在有状态栏的情况下窗体整体偏下,原来是获取屏幕的宽、高是整个屏幕的宽、高。窗体在显示时应该时去除底部状态栏的。所以我对代码做了一点调整。
from ctypes import Structure, c_long, windll, byref
from tkinter import Tk
class RECT(Structure):
_fields_ = [("left", c_long), ("top", c_long), ("right", c_long), ("bottom", c_long)]
SPI_GETWORKAREA = 48
# 创建 Tkinter 窗口
root = Tk()
# 宽度
width = 1000
# 高度
height = 600
# 获取屏幕工作区域的宽度和高度
'''居中显示'''
work_rect = RECT()
windll.user32.SystemParametersInfoW(SPI_GETWORKAREA, 0, byref(work_rect), 0)
ww = work_rect.right - work_rect.left
wh = work_rect.bottom - work_rect.top
size = '%dx%d+%d+%d' % (width, height, (ww - width) / 2, (wh - height) / 2)
root.geometry(size)
if __name__ == '__main__':
# 窗口主循环
root.mainloop()

看起来有什么感觉吗~~
接下来优化一下代码
from tkinter import Tk
from ctypes import Structure, c_long, windll, byref
class RECT(Structure):
_fields_ = [("left", c_long), ("top", c_long), ("right", c_long), ("bottom", c_long)]
SPI_GETWORKAREA = 48
class WindowTk(Tk):
def __init__(self, width=1000, height=600):
super().__init__()
'''居中显示'''
work_rect = RECT()
windll.user32.SystemParametersInfoW(SPI_GETWORKAREA, 0, byref(work_rect), 0)
self.ww = work_rect.right - work_rect.left
self.wh = work_rect.bottom - work_rect.top
size = '%dx%d+%d+%d' % (width, height, (self.ww - width) / 2, (self.wh - height) / 2)
self.geometry(size)
if __name__ == '__main__':
root = WindowTk()
root.mainloop()
1230

被折叠的 条评论
为什么被折叠?



