如何使TextBox正确放置在Tkinter的搜索条目下?

时间:2012-05-11 07:13:05

标签: python tkinter

def initUI(self):
     self.columnconfigure(5, weight=1)
     self.rowconfigure(3, weight=1)
     self.search_label = Label(self, text='Keyword:')
     self.search_label.grid(row=0, column=0, padx=5)

     self.keywords = StringVar()
     self.search_bar = Entry(self, width=30,textvariable=self.keywords)
     self.search_bar.grid(row=0, column=1)

     self.search_button = Button(self, text="Search",
                          command=self.handler_search)
     self.search_button.grid(row=0, column=3, padx=5)
     self.pack(fill=BOTH)#, expand='yes')
     #self.pack(fill=BOTH)
     self.box = Text(self, state='disabled')
     self.box.grid(row=1, column=0)

UI由三个子框架组成,文本编辑器为一个,侧面按钮形成在另一个内部,搜索在另一个内部。上面的代码段是搜索用户界面。

查看屏幕截图:http://i.imgur.com/Vip1t.png

我想放置一个文本框作为搜索框的一部分,搜索框位于搜索条目下。我希望它尽可能扩展底部区域。

我试图扩展,填充等,但它没有解决条目被拉伸的问题,并且我的文本框被切断了(我之前添加了滚动条,但它也被切断了)。 / p>

问题出在哪里?感谢。

1 个答案:

答案 0 :(得分:1)

给自己一张方格纸并画出你的GUI。问题应该变得明显。

您将条目小部件放在第1列,第0列中的文本小部件。我不完全确定您要查找的效果,但您可以将文本小部件移动到第1列,或将其保留在第0列,让它跨越两列。

假设您希望文本小部件是标签条目按钮组合的整个宽度,并且您希望标签小部件只有它需要的大小,我将停止使用网格并开始使用pack for通过执行以下操作,GUI的这一部分:

  1. 为整个区域创建一个框架;如果你想让它不可见,你可以将它的边界宽度设置为零
  2. 为条目小部件,标签和搜索按钮创建内部框架。将它打包到顶部,填充= x
  3. 创建文本窗口小部件,将其打包到底部,填充= both,expand = True
  4. 创建标签,将其打包在内框的左侧
  5. 创建搜索按钮,将其打包在内框右侧
  6. 创建条目小部件,将其打包在内部框架的左侧,fill = x,expand = True
  7. 这将为您提供一个自包含的megawidget,其具有适当的调整大小行为,您可以将其放置在主应用程序中的任何位置。

    分段构建GUI,并自由使用内部框架来实现您正在努力的外观和行为,并使用适合每个部分的几何管理器。如果您需要在网格中对齐某些内容,请使用网格。如果您不需要真正的网格,但确实有独立的行或列,请使用pack。 pack擅长将行放置在行或列中。网格擅长在网格中排列。为工作选择合适的工具。