我正在尝试在GUI中调整窗口大小,但是其中一个框架被忽略了,我不确定为什么。窗口在水平方向上可以调整大小,但是当我尝试在垂直方向上调整大小时,带有按钮的框架会消失。这是我的第一个GUI,所以我确定我缺少某些东西...
from Tkinter import *
from ttk import *
class GUI(Frame):
def __init__(self, root):
Frame.__init__(self, root)
self.root = root
lbFrame = Frame(self.root)
nbFrame = Frame(self.root)
self.note = Notebook(nbFrame)
self.note.pack(fill=BOTH, expand=YES)
lbFrame.pack(side=LEFT, fill=BOTH, expand=YES)
nbFrame.pack(side=RIGHT, fill=BOTH, expand=YES)
self.make_file_viewer()
# Label
lblabel = Label(lbFrame, text='Files', background='#E8E8E8')
lblabel.pack(side=TOP, expand=YES, padx=10, pady=10)
# Listbox
self.lb = Listbox(lbFrame, height=49, borderwidth=0, font=('Purisa', 11), selectmode=EXTENDED)
self.lb.pack(side=BOTTOM, expand=YES, padx=10, pady=10)
def make_file_viewer(self):
fvwr = Frame(self.note)
dataFrm = Frame(fvwr)
btnFrm = Frame(fvwr)
dataFrm.pack(side=TOP, fill=BOTH, expand=YES)
btnFrm.pack(side=BOTTOM, fill=BOTH, expand=YES)
fvwr.config(borderwidth=2)
self.note.add(fvwr, text='File View')
# Label
self.lbl_fvwr_search = Label(dataFrm, text='Search Hits\t0', justify=LEFT)
self.lbl_fvwr_search.pack(side=TOP, anchor=W, expand=YES)
# Scrollbar
scrollbar_fvwr = Scrollbar(dataFrm)
scrollbar_fvwr.pack(side=RIGHT, fill=Y, expand=YES)
# Textbox
self.outputPanel_fvwr_text = Text(dataFrm, wrap='word', height=40, width=115, yscrollcommand=scrollbar_fvwr.set)
self.outputPanel_fvwr_text.pack(side=LEFT, fill=BOTH, expand=YES)
scrollbar_fvwr.config(command=self.outputPanel_fvwr_text.yview)
# Start button
viewBtn = Button(btnFrm, text='Start', width=8)
viewBtn.pack(anchor=W, expand=YES)
if __name__ == '__main__':
root = Tk()
app = GUI(root)
root.mainloop()
绝对可以做的最好的事情是重新开始,并逐步进行布局。首先创建主要区域,并确保它们正确调整大小。在您的情况下,请创建左侧和右侧。再次,使这两个方面相对于彼此适当地调整大小。
完成后,专注于某一部分。由于您知道主要部分的大小可以正确调整,因此您只需要关注该特定侧的元素即可。再次,将其分解成多个部分,并在处理主要部分中的任何小部件之前使这些部分工作。
当您以这种方式进行布局时,使整个GUI正常工作要容易得多,因为您不会尝试同时处理六个小部件的行为。
在您的特定情况下,问题的根源在于您几乎拥有expand=YES
所有东西。根据一般经验,您只想将其设置YES
为给定父窗口中的一个小部件。例如,在主窗口中,您希望向右扩展而不是在左侧(我猜测是),在右窗口中,您希望扩展文本小部件,而不是其他小部件。
设置expand=NO
为scrollbar_fvwr
,,self.lbl_fvwr_search
并btnFrm
获得右侧的尺寸以正确调整尺寸。对于左侧,增加fill=BOTH
了self.lb
和expand=NONE
为lblabel
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句