首页 > 解决方案 > tkinter - LabelFrame 不显示标签

问题描述

我正在尝试LabelFrame在 tkinter 中创建一个,但是没有显示框架的“标题”,也没有显示LabelFrame.

最小的例子:

import tkinter as tk

root = tk.Tk()
root.title("Test")
root.geometry("400x400")

instance = tk.Label(root, text="SCTL:").pack()

labelframe = tk.LabelFrame(root, text="Title of Frame").pack()
instance2 = tk.Label(labelframe, text="some text").pack(padx=10, pady=10)

root.mainloop()

此示例将显示“一些文本”,但不会显示“框架标题”。我正在使用 Python 3.8.8 和 tkinter 8.6.10。有谁知道我如何获得框架的标题和要显示的边框?

先感谢您!

标签: pythontkinter

解决方案


所以这里的问题是你正在初始化和打包标签框,就像@jasonharper 指出的那样 -: labelframe = tk.LabelFrame(root, text="Title of Frame").pack()

请注意,这不起作用,因为变量 labelframe 没有被分配新初始化的 labelframe 对象,而是被调用函数包的返回值。

这意味着,如果我们在两行不同的行中编写相同的内容,一行用于对象初始化,另一行用于打包,问题就消失了。像这样-:

labelframe = tk.LabelFrame(root, text="Title of Frame") # First initialize the object and store it in the variable.
labelframe.pack() # Then use the variable to pack it.

通常,如果要在程序中长期使用 tkinter 小部件,我建议不要将其打包在与初始化相同的行中,这不仅会丢失新初始化对象的引用,还会导致此类问题。

但是如果是临时的,那么可以在一行中完成。在这里,您在下一行中使用了 LabelFrame,因此应该分别进行打包和初始化。


推荐阅读