2014-02-16 4 views
1

GUI에서 창의 크기를 조정하려하지만 프레임 중 하나가 사라져서 그 이유를 모르겠습니다. 창 크기를 수평으로 잘 조절하지만 세로로 크기를 조정하려고하면 단추가있는 프레임이 사라집니다. 뭔가 내가 부족이 확신 그래서 이것은 당신이 할 수있는파이썬 tkinter : 프레임 크기 조정 문제

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() 

답변

5

절대 가장 좋은 시작하고, 단계별로 레이아웃을 할 것입니다 ... 내 첫 번째 GUI입니다. 메인 영역을 생성하고 적절하게 크기를 조정하십시오. 귀하의 경우, 왼쪽과 오른쪽을 만듭니다. 다시 말하면, 서로 양면으로 적절하게 크기를 조정하십시오.

일단 끝나면 한 섹션에 집중하십시오. 메인 섹션의 크기가 적절하게 조정되었다는 것을 알고 있기 때문에, 그 특정면 내의 요소들에 집중하면됩니다. 다시 말하지만, 조각으로 나누고 주요 조각 안에있는 위젯을 다루기 전에 조각을 작동 시키십시오.

레이아웃을 이렇게하면 번 GUI가 제대로 작동하기가 더 쉬워집니다. 한 번에 6 개 위젯의 동작을 저글링하지 않으려 고하기 때문입니다.

특정 경우, 문제의 근본 원인은 거의 모든 것에 대해 expand=YES입니다. 일반적으로 주어진 부모 창에서 하나의 위젯에 대해서만 YES으로 설정하기를 원할 것입니다. 예를 들어 메인 윈도우에서 오른쪽으로 확장 할 수는 있지만 왼쪽으로는 만들지 않으려 고합니다. 그리고 오른쪽 창에서 텍스트 위젯을 확장하려고하지만 다른 위젯은 확장하지 않을 것입니다.

scrollbar_fvwr, self.lbl_fvwr_searchbtnFrm에 대해 expand=NO을 설정하면 올바르게 크기를 조정할 수 있습니다. 왼쪽에는 self.lbfill=BOTH을 입력하고 lblabel에는 expand=NONE을 입력하십시오.

+0

감사합니다. 이것은 정말로 도움이되었습니다! 나는 당신의 코멘트를 upvote 줄 것이지만 이것은 나의 첫 번째 질문이었고 나는 아직 명성을 얻지 못했다. 다시 한 번 감사드립니다. – rhowe