为何显式设置后Tkinter的ttk Label仍无法居中?求解决方法
解决ttk Label在窗口顶部居中的问题
你原来的代码问题在于:
place(x=500, y=0)是把Label的左上角放在窗口x=500的位置,而Label本身有宽度,所以整体会偏右justify="center"只是让Label内部的文本居中,并不是让Label控件在窗口中居中
以下是三种可靠的实现方式:
方法1:使用pack布局(最简单)
pack布局默认会让控件水平居中,搭配side=TOP可以固定在窗口顶部:
from tkinter import * from tkinter.ttk import * window = Tk() window.geometry("1000x600") Label(master=window, text="Welcome to the funny quiz!!!!!!!!!!!").pack(side=TOP) window.mainloop()
方法2:使用grid布局
通过配置列权重,让Label随窗口宽度自动居中,同时固定在顶部:
from tkinter import * from tkinter.ttk import * window = Tk() window.geometry("1000x600") # 设置第0列随窗口宽度拉伸 window.grid_columnconfigure(0, weight=1) # sticky=N 让Label固定在顶部,同时水平居中 Label(master=window, text="Welcome to the funny quiz!!!!!!!!!!!").grid(row=0, column=0, sticky=N) window.mainloop()
方法3:使用place布局(精准控制)
如果一定要用place,需要用相对坐标+锚点实现居中:
from tkinter import * from tkinter.ttk import * window = Tk() window.geometry("1000x600") # relx=0.5 表示相对窗口宽度的50%位置,anchor=N 让Label的顶部中点对齐该位置 Label(master=window, text="Welcome to the funny quiz!!!!!!!!!!!").place(relx=0.5, y=0, anchor=N) window.mainloop()
内容的提问来源于stack exchange,提问作者RedP
相关产品推荐
相关产品推荐

