tkinter - 创建标签小部件(包含文本),其大小由像素尺寸定义
tkinter - create label widget (containing text) with size defined by pixel dimensions
我正在尝试制作一个 tkinter 标签,其中包含宽度和高度由像素尺寸定义的文本。很明显,包含文本大小的标签小部件是根据 docs:
中的文本大小定义的
If the label displays text, the size is given in text units. If the label displays an image, the size is given in pixels (or screen units). If the size is set to 0, or omitted, it is calculated based on the label contents.
我已经尝试使用这些信息来实现我想要做的事情。在创建时间表应用程序时,我想创建固定宽度 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倍,完全不在屏幕上。
使用单独的框架作为每个 "label" 然后创建标签小部件作为这些框架的子项也不起作用,因为框架只是调整大小以适合标签。 我的问题是: 有没有一种方法可以创建按像素尺寸调整大小的包含文本的标签?
做时间表适合使用 grid
打包方法,它有一个 grid_columnconfigure
和一个 grid_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()
我已经找到了解决方案。我使用了一个框架,禁用了它的 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()
我正在尝试制作一个 tkinter 标签,其中包含宽度和高度由像素尺寸定义的文本。很明显,包含文本大小的标签小部件是根据 docs:
中的文本大小定义的If the label displays text, the size is given in text units. If the label displays an image, the size is given in pixels (or screen units). If the size is set to 0, or omitted, it is calculated based on the label contents.
我已经尝试使用这些信息来实现我想要做的事情。在创建时间表应用程序时,我想创建固定宽度 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倍,完全不在屏幕上。
使用单独的框架作为每个 "label" 然后创建标签小部件作为这些框架的子项也不起作用,因为框架只是调整大小以适合标签。 我的问题是: 有没有一种方法可以创建按像素尺寸调整大小的包含文本的标签?
做时间表适合使用 grid
打包方法,它有一个 grid_columnconfigure
和一个 grid_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()
我已经找到了解决方案。我使用了一个框架,禁用了它的 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()