2012-07-11 2 views
1

저는 Tkinter를 배웠습니다. 세 개의 프레임을 프레임의 일부로 만들고 싶은 작은 코드를 작성했습니다. 이제이 코드를 한 줄씩 실행하면 예상대로 작동합니다. 그러나 전체 프로그램으로 실행하면 프레임 1과 프레임 2 사이에 많은 공백이 있습니다.Tkinter에서 여러 프레임을 사용하여 예상 한 결과를 얻지 못했습니다.

from Tkinter import * 
tk = Tk() 
tk.geometry("") 
main_frame = Frame(tk) 
main_frame.grid(row=0) 
frame1 = Frame(main_frame, bg="blue", width=200, height=400, borderwidth =1) 
frame1.grid(row=0, column=0) 
frame2 = Frame(main_frame, bg="green", width=800, height=400) 
frame2.grid(row=0, column=1) 
frame3 = Frame(main_frame, bg="orange", width=1000, height=100) 
frame3.grid(row =1) 
tk.mainloop() 

다른 문제는 내가 창을 최대화하고 원래 크기로 다시 바뀌거나이 기본 창을 늘리는 것입니다. 프레임이 겹쳐지고 일부 유령이 보입니다. 어떤 사람이 이상한 행동을 설명 할 수 있습니까?

감사합니다.

답변

4

문제는 어떻게 그리는가하는 것입니다. 기본적으로 모든 객체는 단일 블록으로 격자가 만들어집니다. 그래서, 당신은 그리드는 다음과 같은 형태입니다 :이 경우

------------------------------- 
| frame 1  | frame 2 | 
------------------------------- 
| frame 3  | nothing | 
------------------------------- 

에서, frame1가에 앉아있는 영역이 frame3 이후 frame3 너무 커 수용하도록 확장됩니다. 해결 방법은 columnspan 키워드를 지정하여 frame3이 그리드의 1 열 이상에 걸쳐 있도록 허용하는 것입니다.

frame3.grid(row=1,column=0,columnspan=2) 
+0

고맙습니다. 내 문제를 해결했다. – sarbjit

관련 문제