2013-06-09 2 views
13

이 간단한 코드를 고려 표시 :의 Tkinter TTK 구분 못해

from Tkinter import * 
import ttk 
root= Tk() 
ttk.Label(root, text='Heading Here').grid(row=1, column=1) 
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5) 
root.mainloop() 

이 코드를 실행하면 구분이 거의 보이지 않습니다.
ttk separator not visible
작은 점으로 볼 수 있다면 빨간색 화살표로 표시했습니다.

분리 기호를 전체 가로 너비에 걸쳐 표시하거나 적어도 보이게하려면 어떻게해야합니까?

답변

19

구분 기호의 너비는 1 픽셀입니다. 5 개의 열에 걸쳐 공간을 예약하라고 말했지만 분리 기호가 실제로 5 개의 열을 채우도록 요청하지 않았습니다. 이 문제를 해결하려면 sticky 속성을 제공하십시오. "이 위젯에 필요한 것보다 더 많은 공간이 있으면 위젯의 가장자리를 해당 컨테이너의 특정 측면에 붙이십시오."

이 경우 구분 기호를 컨테이너의 왼쪽 및 오른쪽 가장자리에 붙이기를 원합니다. 끈적 끈적한 속성 값 나침반의 포인트를 사용, 그래서 당신은 서쪽에 "E"동쪽을 위해, 그리고 "w"를 원하는 : 브라이언의 sticky 솔루션 @

ttk.Separator(...).grid(..., sticky="ew") 
+0

감사합니다.이 문제를 해결했습니다. – oat

0

괜찮 있지만 그것은 단지 케이스의 일부를 해결, 구분 기호가 전체 가로 너비를 묻지 않기 때문입니다. 다음은 적용 할 수있는 대체 솔루션입니다. .grid() 대신 place() 레이아웃을 사용하고 세퍼레이터의 위치, 폭 (길이) 및 높이까지 완벽하게 제어 할 수 있습니다.

ttk.Separator(root).place(x=0, y=26, relwidth=1) 

당신은 '을 y로 설정할 수 있습니다와

ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5) 

교체 : 단지 (/ 여분의 기능 O w) 본 경우에이 사항을 적용하고 단지 전체 가로 폭을 커버하려면 '당신이 좋아하는대로. 또한 기본 옵션이므로 orient=HORIZONTAL은 필요하지 않습니다. (`.option() '레이아웃의 사용법에 대한 자세한 내용과 예제는 http://effbot.org/tkinterbook/place.htm을 확인하십시오.