Python tkinter LabelFrame未附加小部件

Python tkinter LabelFrame未附加小部件,python,tkinter,python-2.7,Python,Tkinter,Python 2.7,我在tkinter程序中遇到了一个问题,我让LabelFrame对一组标签和条目进行分组,但是,它没有对我的小部件进行分组。我的LabelFrame代码如下: (编辑:我设法让标签显示出来,但它没有对我的小部件进行分组。) 为框架提供一些大小属性: from Tkinter import * root = Tk() message_frame = LabelFrame(root,text="testing",padx=0,pady=0,width=100,height=100).grid(r

我在tkinter程序中遇到了一个问题,我让LabelFrame对一组标签和条目进行分组,但是,它没有对我的小部件进行分组。我的LabelFrame代码如下:

(编辑:我设法让标签显示出来,但它没有对我的小部件进行分组。)


为框架提供一些大小属性:

from Tkinter import *
root = Tk()  
message_frame = LabelFrame(root,text="testing",padx=0,pady=0,width=100,height=100).grid(row=0,column=0,padx=5,pady=10)
一旦定义了宽度和高度,框架就会显示得很好。
如果您发布了一些框架的内容,如果这不是问题,可能会更清楚。

为框架提供一些大小属性:

from Tkinter import *
root = Tk()  
message_frame = LabelFrame(root,text="testing",padx=0,pady=0,width=100,height=100).grid(row=0,column=0,padx=5,pady=10)
一旦定义了宽度和高度,框架就会显示得很好。
如果您发布了一些框架内容,如果这不是问题,可能会更清楚。

在Tkinter中,典型的工作流程是创建一个小部件,然后使用一些几何管理器将其放置在两个单独的行上

如果我没有弄错的话,Tkinter小部件上的
.grid
方法返回
None
。因此,如果您在创建消息框架后立即打印它,您可能会看到它是
None
。当您使用传递给下一个小部件的数据时,他们认为您希望将其放在根小部件上

简单的解决方法是执行以下操作:

message_frame=LabelFrame(root,text="testing",padx=0,pady=0,width=100,height=100)
message_frame.grid(row=0,column=0)

您可能也希望对所有小部件执行相同的操作,因为我怀疑您是否真的想要
pub_label
=
priv_label
=
None

在Tkinter中,典型的工作流是创建一个小部件,然后使用一些几何体管理器将其放置在两行上

如果我没有弄错的话,Tkinter小部件上的
.grid
方法返回
None
。因此,如果您在创建消息框架后立即打印它,您可能会看到它是
None
。当您使用传递给下一个小部件的数据时,他们认为您希望将其放在根小部件上

简单的解决方法是执行以下操作:

message_frame=LabelFrame(root,text="testing",padx=0,pady=0,width=100,height=100)
message_frame.grid(row=0,column=0)

您可能也希望对所有小部件执行相同的操作,因为我怀疑您是否真的想要
pub_label
=
priv_label
=
None

是的,这就是问题所在。我一直不明白为什么人们会将包或网格与小部件的创建结合起来,一定有一个教程提倡…@BryanOakley如果对它进行子类化并制作
pack
grid
return
self
,你就可以这样做。。。但我认为这是一件很自然的事情。我怀疑任何教程都会提倡这样做,因为要用它做任何事情都很难在小部件上检索你的句柄……我认为Bryan说的是,有这么多人在使用这种容易出错的模式,因此肯定有人在某个地方提倡(或提供示例)这种用法。这对我来说是很自然的,有着闲聊的背景,但我不认为这是一种传播。在Python(以及其他广泛使用的语言)中,你不希望“过程”返回自我。@FabienAndre我理解Bryan所说的……这似乎是一件非常糟糕的事情,以至于我很难想象任何有足够知识来编写教程的人会犯这样的“错误”…我想如果你只是在创建你不打算在以后做任何事情的标签,那就可以了。。。这就是说,由于它是如此普遍,我想知道在做
网格
打包
放置
返回
自我
?@BryanOakley几次搜索后,它可能来自perl/tk代码的直接翻译,在这其中,打包和网格调用在同一行上显示出相当普遍的情况……是的,这就是问题所在。我一直不明白为什么人们会将包或网格与小部件的创建结合起来,一定有一个教程提倡…@BryanOakley如果对它进行子类化并制作
pack
grid
return
self
,你就可以这样做。。。但我认为这是一件很自然的事情。我怀疑任何教程都会提倡这样做,因为要用它做任何事情都很难在小部件上检索你的句柄……我认为Bryan说的是,有这么多人在使用这种容易出错的模式,因此肯定有人在某个地方提倡(或提供示例)这种用法。这对我来说是很自然的,有着闲聊的背景,但我不认为这是一种传播。在Python(以及其他广泛使用的语言)中,你不希望“过程”返回自我。@FabienAndre我理解Bryan所说的……这似乎是一件非常糟糕的事情,以至于我很难想象任何有足够知识来编写教程的人会犯这样的“错误”…我想如果你只是在创建你不打算在以后做任何事情的标签,那就可以了。。。这就是说,既然它如此普遍,我想知道制作
grid
pack
place
return
self
?@BryanOakley经过几次搜索后,它可能来自perl/tk代码的直接翻译,其中pack和grid在同一行上的调用显示出相当普遍的。。。