tkinter - 创建尺寸由像素尺寸定义的标签小部件(包含文本)

时间:2016-02-15 13:55:25

标签: python python-3.x tkinter label

我正在尝试制作包含由像素尺寸定义的宽度和高度的文本的tkinter标签。很明显,包含文本大小的标签小部件是根据docs中的文本大小定义的:

  

如果标签显示文字,则以文字为单位给出尺寸。如果标签显示图像,则以像素(或屏幕单位)给出大小。如果大小设置为0或省略,则根据标签内容计算。

我尝试过使用这些信息来实现我想要做的事情。我想在创建时间表应用程序时创建固定宽度700和可变高度的标签。这是我到目前为止所尝试的一个例子:

import tkinter as tk

root = tk.Tk()
root.geometry("800x600")

height = 20

label = tk.Label(root,width=700,bg="white",text="test",borderwidth=0,font=("Calibri",height))
label.place(x=10,y=10)

root.mainloop()

这个几乎达到了我想要的高度,但我希望height = 1时高度为1像素,但它实际上是5像素(我已经非常视力好!)至于宽度,它完全脱离屏幕,是角色宽度的700倍。

使用单个框架作为每个“标签”,然后创建标签窗口小部件作为这些框架的子窗口也不起作用,因为框架只是调整大小以适合标签。 我的问题是:有没有办法创建一个按像素尺寸大小的包含文字的标签?

2 个答案:

答案 0 :(得分:3)

我在我的案例中找到了解决方案。我使用了一个框架,禁用了它pack_propagate并将标签作为此框架的子项。我希望其他人会发现它很有用。 This question给了我很多帮助。

import tkinter as tk

root = tk.Tk()
root.geometry("800x600")

height = 20

label_frame = tk.Frame(root,width=700,height=height,bg="white")
label_frame.pack_propagate(0) # Stops child widgets of label_frame from resizing it
tk.Label(label_frame,bg="white",fg="black",text="test",font=("Calibri",15)).pack()
label_frame.place(x=10,y=10)

root.mainloop()

答案 1 :(得分:2)

执行时间表有助于使用grid打包方法,该方法具有grid_columnconfiguregrid_rowconfigure方法,可用于设置最小和最大大小行或列,以及它们展开的速率:

import tkinter as tk

root = tk.Tk()

tk.Label(root, text="Test").grid(column=1, row=1, sticky="nesw")

root.grid_columnconfigure(1, minsize=700)

root.mainloop()