tkinter LabelFrame不支持小部件

时间:2012-04-26 02:11:48

标签: python tkinter python-2.7

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

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

root=Tk()
message_frame=LabelFrame(root,text="testing",padx=0,pady=0,width=100,height=100).grid(padx=5,pady=10)

message_label=Label(message_frame,text="Message").grid(row=1,column=0,sticky=W)
pub_label=Label(message_frame,text="Public Key").grid(row=2,column=0,sticky=W)
priv_label=Label(message_frame,text="Public Key").grid(row=3,column=0,sticky=W)

message_entry=Entry(message_frame,textvariable=message,width=50).grid(row=1,column=1,sticky=W)
pub_entry=Entry(message_frame,textvariable=pub_key,width=50).grid(row=2,column=1,sticky=W)
priv_entry=Entry(message_frame,textvariable=private_key,width=50).grid(row=3,column=1,sticky=W)

2 个答案:

答案 0 :(得分:2)

为框架提供一些尺寸属性:

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)

定义宽度和高度后,框架显示正常。 如果您发布了一些框架的内容,如果不是问题,可能会更清楚。

答案 1 :(得分:2)

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

如果我没弄错,Tkinter小部件上的.grid方法会返回None。因此,如果您在创建它之后立即print message_frame,您可能会看到它是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 ......