我正在制作一个Python程序,我正在寻找方法在我的程序内部制作一个漂亮的居中对齐标题。但是,我在执行此操作时遇到了困难,因为使用我现有的工具,我必须试验标签间距长度以匹配我的标题有多少个字符。有没有一种方法可以使 Python 标签具有一定的像素长度,而不管文本的长度如何?我正在专门寻找一种方法,专门使标签具有特定数量的像素长,这样我就不必尝试所有这些不同的长度。
我尝试使用“padx”和“pady”参数,但我发现长度总是会根据标签本身文本的长度而变化。我还尝试了“width”参数,但它仅扩展了多个文本长度。
from tkinter import *
root = Tk()
root.geometry("960x600")
label_toptitle = Label(root,
text="Program Name",
padx=40,
pady=40,
font=(None, 40),
#height=2,
#width=30
)
root.mainloop()
这是我当前的代码,但如果我将名称“程序名称”更改为另一个名称,padx 和 pady 和/或宽度或高度函数将变得不一样的像素长。我需要一种方法使标签具有固定的像素长度。
最佳答案
您的问题标题提到设置标签的长度,但您的真正目标似乎是使标签居中而无需计算边距。
最好的解决方案是不使用填充或边距来使小部件居中。只需告诉 tkinter 当您使用 grid 或 pack 时您希望内容居中,这实际上是默认设置。您根本不必做太多事情。
例如,以下内容将给出一个标题居中的窗口:
import tkinter as tk
root = tk.Tk()
root.geometry("960x600")
label_toptitle = tk.Label(root,
text="Program Name",
font=(None, 40),
)
label_toptitle.pack(side="top", fill="x")
root.mainloop()
网格也可以居中,但确切的语法取决于您拥有的其他行和列。如果不知道很难给出有用的例子。
如果您确实需要为标签指定精确的像素宽度,您可以向标签添加透明的单像素图像并将其隐藏在文本后面。添加图像时,width
属性表示以像素而不是字符为单位的宽度。
示例:
pixel = tk.PhotoImage(width=1, height=1)
label = tk.Label(root, image=pixel, text="Hello", compound="center", width=100)
关于python - 将Python标签的特定宽度设置为这么多像素长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51867429/