Python 如何制作LabelFrame';s帧不可见?(特金特)

Python 如何制作LabelFrame';s帧不可见?(特金特),python,tkinter,ttk,Python,Tkinter,Ttk,我的代码如下: import tkinter as tk from tkinter import ttk window = tk.Tk() window.title('None') label = ttk.LabelFrame(window, text = 'What I want to delete') label.grid(column = 0, row = 0, padx = 5, pady = 5) text = ttk.Label(label, text = 'Hello Worl

我的代码如下:

import tkinter as tk
from tkinter import ttk

window = tk.Tk()
window.title('None')

label = ttk.LabelFrame(window, text = 'What I want to delete')
label.grid(column = 0, row = 0, padx = 5, pady = 5)
text = ttk.Label(label, text = 'Hello World')
text.grid(column = 0, row = 0)

window.mainloop()

现在让我惊讶的是,当我做以下更改时:

import tkinter as tk
from tkinter import ttk

window = tk.Tk()
window.title('None')

label = ttk.LabelFrame(window, text = 'What I want to delete').grid(column = 0, row = 0, padx = 5, pady=5)
text = ttk.Label(label, text = 'Hello World').grid(column = 0, row = 0)

window.mainloop()
标签的框架不会出现。只有文本。如下图所示:

这意味着LabelFrame存在,但没有显示,因为没有错误。我想


总之,这就是我“解决它”的方式。因此,我的问题是,是否有一种功能可以使LabelFrame中不显示帧?

ttk。LabelFrame只有在其内部有东西或具有固定大小时才可见。在第一个示例中,您给出了
ttl。带有
text='Hello Word'
的标签
小部件显然位于LabelFrame内,因为您将其作为其父项传递。但在第二个例子中,情况并非如此。您可能会认为这是因为您还将
label
定义为
ttk.label
父项,但如果您执行
print(label)
操作,您将看到它将打印
None
,并且在tkinter中,如果您将
None
作为小部件主项传递,它将理解主项是根
Tk()
小部件

那么,为什么会发生这种情况?两个示例之间的区别在于,在第一个
label=ttk.LabelFrame()
中,它是LabelFrame对象(LabelFrame类的实例),而在第二个
label=ttk.LabelFrame().grid()
中,它是grid方法的输出,由于grid方法不返回任何内容,因此label等于
None
。总之,您要做的是将LabelFrame和任何内容放在一起,然后将第二个标签放在主窗口的相同位置,这就是为什么您看不到LabelFrame的原因


好的,那么如何使LabelFrame不可见?最好的选择不是使用
ttk.LabelFrame
,而是使用
tk.LabelFrame
,因为现在您可以使用
label.configure({“relief”:“flat”,“text”:“})随边框消失。
。当然,这看起来像是框架不存在,但框架内的所有内容仍然可见。如果你想在标签内的东西消失,你可以使用
label.destroy()
(你将无法恢复标签)或label.grid\u-forget()(这只会“取消”标签)。

我的回答对你有帮助吗?@FlavioMoraes它工作得很好。我只是在编写我的应用程序。非常感谢。我只是回来检查我需要记住的信息。所以请给我的投票solution@FlavioMoraes我的名声还不到15岁。对不起,没问题,但请将答案标记为已接受。