2016-07-15 1 views
3

레이블 뒤에 구분 기호가 포함 된 사용자 정의 위젯을 만들려고합니다. 구분 기호를 창 뒤쪽 (격자를 사용하여) 레이블 뒤쪽으로 늘려야합니다. 이 사진을 직접 만들려고했지만 분리자를 가장자리에 붙이지 못했습니다. Python Tkinter 레이블이있는 TTK 구분 기호

import tkinter as tk 
from tkinter import ttk 

class LabelSeparator (tk.Frame): 
    def __init__ (self, parent, text = "", width = "", *args): 
     tk.Frame.__init__ (self, parent, *args) 

     self.separator = ttk.Separator (self, orient = tk.HORIZONTAL) 
     self.separator.grid (row = 0, column = 0, sticky = "ew") 

     self.label = ttk.Label (self, text = text) 
     self.label.grid (row = 0, column = 0, padx = width) 

if __name__ == "__main__": 
    root = tk.Tk() 
    root.geometry ("200x40") 

    label = LabelSeparator (root, text = "Label", width = 15) 
    label.grid (sticky = "ew") 

    label2 = LabelSeparator (root, text = "A Second Label", width = 15) 
    label2.grid (sticky = "ew") 

    root.mainloop() 

Separator With Label

내가 구분을 확장 발견하는 유일한 방법

는 브랜드 라벨에 padx 증가했지만, 그건 정말 문제가 해결되지 않습니다.

필자는 맞춤 위젯을 만드는 데있어 새로운 점을 언급해야합니다.

답변

2

코드에 유일한 문제는 grid_columnconfigure을 호출하여 tkinter에게 여분의 공간으로 무엇을 할 것인지를 알려주지 않았다는 것입니다. 내부 프레임에 여분의 공간을 어떻게 처리할지 알려주지 않았으므로 빈 공간으로 남겨 둡니다. 위젯이 부모에 배치되고 확장 될 때 내부 위젯이 추가 공간을 사용하지 않고 있습니다.

self.grid_columnconfigure(0, weight=1) 

엄지 손가락의 일반적으로, 당신은 항상 자녀의 관리 그리드를 사용하는 부모 적어도 하나의 행과 하나 개의 컬럼의 무게를 설정하려면 :

__init__이 당신에 다음을 추가 .

+0

아, 정말 고마워요. 나는 그것이 간단하다는 것을 깨닫지 못했습니다 ... 소프트웨어를 개발할 때 그리드 관리자를 올바르게 사용합니다. 이것은 위젯을 테스트하는 것이 었습니다. – PotatoBeenCrafted