2012-07-10 2 views
3

고정 크기의 프레임을 만들었으므로 이제는 레이블과 다른 위젯을 추가하려고합니다. 그러나 나는이 프레임에 새로운 위젯을 추가하자마자 그 속성이 존중되지 않는다는 것을 관찰했다. 즉, 크기와 기본 배경 색상 세트가 존중되지 않는다. Tkinter에서 프레임에 레이블을 추가하면 프레임의 속성이 무시됩니다.

from Tkinter import * 
tk = Tk() 
page1 = Frame(tk, bg="blue", width=100, height=200) 
l1 = Label(page1, text='This is label 1') 
page1.pack() 
l1.pack() 
tk.mainloop() 

그래서 위의 예에서 그때 내가 청색 배경색으로 고정 크기의 프레임을 볼 수 있고, 4 행 6 & 주석 경우. 내 요구 사항은이 프레임에 다른 색상의 다른 위젯을 추가하고 싶습니다.

답변

3

너는 높이와 너비가 맞지 않지만 배경색은 정확하지 않다. 배경색은 영향을받지 않지만 배경이 레이블 주변에 정확하게 들어 있기 때문에 배경을 볼 수 없습니다. 포장 할 때 패딩을 레이블에 추가하면 배경이 표시됩니다.

너비와 높이는 Tkinter의 큰 특징 중 하나입니다. 기본적으로 컨테이너 위젯은 내용을 담을 수있을 정도로 커지기 위해 펼치거나 접을 수 있습니다. 따라서 pack을 호출하면 프레임이 축소됩니다. 이 기능을 형상 전파이라고합니다.

광대 한 응용 프로그램의 경우 원하는 동작입니다. 컨테이너의 크기를 명시 적으로 설정하려는 드문 경우에이 기능을 해제 할 수 있습니다. 이 기능을 끄려면 콘테이너에서 pack_propagate 또는 grid_propagate (해당 컨테이너에 그리드 또는 팩을 사용하는지 여부에 따라 다름)을 호출하여 False 값을 지정합니다.

page1.pack_propagate(False) 

나의 추천 그렇게하지 않는 것입니다, 대신 기하학의 전파와 함께 작동하는 방법 :

예를 들어 코드를 사용하여 할 것입니다. 사용자가 창 크기를 조정할 때 GUI가 더 잘 작동하게하고 창의 크기를 계산하는 데 시간을 낭비하지 않아도됩니다. 틴커트가 그렇게 해드 리도록하십시오.

+1

설명해 주셔서 감사합니다. 귀하의 권고를 통해이 일을 내 목적은 내가 위젯 응용 프로그램을 설계했다. 그래서 나는이 목적을 위해 프레임을 사용할 수 있지만 마법사 크기의 다음 페이지로 가면 그대로 유지됩니다. – sarbjit

+0

@sarbjit : 마법사는'wm_geometry'를 사용하여 명시적인 크기를 지정함으로써 크기 조정을 유지할 수 있습니다. 그렇게하면 가장 바깥 쪽 창에 크기가 유지되고 내부 프레임은 창에 맞게 확장됩니다. –

관련 문제