Tkinter:如何使窗口标题居中
Posted
技术标签:
【中文标题】Tkinter:如何使窗口标题居中【英文标题】:Tkinter : How to center the window title 【发布时间】:2016-11-17 08:04:35 【问题描述】:我正在使用 tkinter 创建一个项目,当我创建一个窗口时,我似乎无法让窗口标题居中(就像现在的大多数程序一样)。下面是示例代码:
from tkinter import *
root = Tk()
root.title("Window Title".center(110))# Doesn't seem to work
root.mainloop()
有没有办法让窗口标题居中?在此先感谢
【问题讨论】:
【参考方案1】:width=root.winfo_screenwidth()
spacer=(" "*(int(width)//6))
root.title(spacer+"Your title")
这不是那么完美,但它会起作用。
【讨论】:
【参考方案2】:Billal 建议的更多内容是根据窗口大小进行调整的示例。我仍然不会推荐它,因为它只是视觉美学的一个小技巧,但如果你真的想拥有它。
import tkinter as tk
def center(e):
w = int(root.winfo_width() / 3.5) # get root width and scale it ( in pixels )
s = 'Hello Word'.rjust(w//2)
root.title(s)
root = tk.Tk()
root.bind("<Configure>", center) # called when window resized
root.mainloop()
【讨论】:
这只适用于非常特殊的情况。就我而言,它惨遭失败。这实际上取决于操作系统/窗口管理器的配置方式。要做到这一点,您需要获取窗口管理器使用的字体,根据该字体计算标题字符串的实际宽度,计算空格的宽度,然后进行相应的调整。 是的,我不希望它在大多数情况下都能工作,或者它需要更多的调整,我使用的是 Windows 10。如上所述,如果 OP 真的想要它,我不建议它就在那里它。【参考方案3】:我想出了一个技巧来完成这项工作,它包括在标题前添加尽可能多的空白:
import tkinter as tk
root = tk.Tk()
root.title(" Window Title")# Add the blank space
frame = tk.Frame(root, width=800, height=200, bg='yellow')
frame.grid(row=0,column=0)
root.mainloop()
输出:
或者,您可以使用由空格组成的字符串,并在乘法后将其连接到标题。我的意思是:
import tkinter as tk
root = tk.Tk()
blank_space =" " # One empty space
root.title(80*blank_space+"Window Title")# Easier to add the blank space
frame = tk.Frame(root, width=800, height=200, bg='yellow')
frame.grid(row=0,column=0)
root.mainloop()
【讨论】:
谢谢!但是根据不同的显示器,结果会不会有所不同? 这假定一个具有特定字体的固定大小的窗口。如果用户更改默认系统字体或调整窗口大小,标题将不再居中显示。 好吧,告诉我一种情况,这不起作用。 你应该使用几个“\t”来代替【参考方案4】:你无能为力。除了指定文本之外,Tkinter 无法控制窗口管理器或操作系统如何显示窗口标题。
【讨论】:
以上是关于Tkinter:如何使窗口标题居中的主要内容,如果未能解决你的问题,请参考以下文章
python - 如何在Python的Tkinter模块中使对话框窗口出现在最前面?