0
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 由三个子框架组成,文本编辑器是一个,侧边按钮在另一个框架内,搜索在另一个框架内。上面的代码片段是搜索的 UI。

见截图:http: //i.imgur.com/Vip1t.png

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

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

哪里有问题?谢谢。

4

1 回答 1

1

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

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

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

  1. 为整个区域创建一个框架;如果你想让它不可见,你可以将它的边框宽度设置为零
  2. 为条目小部件、标签和搜索按钮创建一个内部框架。将其打包到顶部,填充=x
  3. 创建文本小部件,将其打包到底部,fill=both,expand=True
  4. 创建标签,将其打包在内框的左侧
  5. 创建搜索按钮,将其打包在内框的右侧
  6. 创建入口小部件,将其打包在内框的左侧,fill=x,expand=True

这将为您提供一个具有适当调整大小行为的独立超小部件,您可以将其放置在主应用程序中的任何位置。

分段构建您的 GUI,并充分利用内部框架来实现您所追求的外观和行为,并使用适合每个部分的几何管理器。如果您需要在网格中对齐的东西,请使用网格。如果您不需要真正的网格,但确实有独立的行或列,请使用 pack。pack 擅长将东西放在行或列中。网格擅长将事物排列在网格中。为工作选择合适的工具。

于 2012-05-11T11:25:11.960 回答