2014-12-10 4 views
0

나는 텍스트, 엔트리 및 ​​라벨 위젯의 '테이블'을 만들기 위해 tkinter의 그리드 지오메트리 관리자를 사용하고 있습니다. 텍스트 위젯 (파란색으로 표시)은 사용자가 해당 입력 위젯에 입력 할 변수의 이름 (예 : 'theta_air')을 표시하는 데 사용되며 라벨 위젯은 적절한 단위 (예 : '° C')를 표시합니다 .텍스트 위젯에서 텍스트를 수직으로 정렬

나는 항목과 레이블 위젯을 수직으로 정렬했습니다. 텍스트 위젯의 파란색 배경에 표시된대로 텍스트 위젯 자체가 올바르게 정렬됩니다. 그러나 텍스트 위젯의 텍스트를 세로로 정렬 할 수는 없습니다. 즉, 텍스트 위젯의 기준선이 항목 또는 레이블 위젯의 기준선에 정렬되지 않습니다.

텍스트 위젯의 텍스트를 세로로 정렬하거나 유사한 광학적 동작을 얻으려면 어떻게해야합니까? 스크린 샷과 코드 스 니펫 (독립 실행 형이 아님)이 아래에 나와 있습니다.

self.parameternames = [ 
    {'name': 'a', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'b', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'c', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'd', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'e', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'f', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'g', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'h', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'i', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'j', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'k', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'l', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'm', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'n', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}, 
    {'name': 'o', 'unit': '\u00b0C', 'coords': (0, 0), 'default': 0.}] 

for i, subdict in enumerate(self.parameternames): 
    r = i % 4 
    c = (i // 4) * 3 
    self.lowerframe.grid_columnconfigure(c, weight=1) 
    self.lowerframe.grid_columnconfigure(c+2, weight=1) 
    t = Text(self.lowerframe, width=5, height=2, background='#336699', font=('', 12)) 
    t.tag_configure('subscript', offset=-4, font=('', 10)) 
    t.tag_configure('justify_right', justify='right') 
    t.insert('insert', '\u03d1', 'justify_right', 'air', 'subscript') 
    t.configure(state='disabled') 
    t.grid(row=r, column=c, pady=5, padx=0, sticky='NSE') 
    Label(self.lowerframe, text=subdict['unit'], anchor=W).grid(row=r, column=c+2, pady=5, padx=0, sticky='W') 
    subdict['var_table'] = StringVar() 
    entry_table = Entry(self.lowerframe, width=10, justify='right', textvariable=subdict['var_table']) 
    entry_table.grid(row=r, column=c+1, pady=5, padx=0, sticky='EW') 
    subdict['pname_table'] = str(entry_table) 

답변

1

Screenshot

는 첨자 텍스트의 절단 같았다 내가 height=1 사용되는 모든 우선 그래서 height=2를 사용했습니다. 인덱스/서브 시퀀스가 ​​잘리는지를 증명하기 위해 인덱스베이스 라인 아래에 'y'가 포함 된 dryer과 같은 다른 인덱스를 사용했습니다. 아래의 스크린 샷에서 볼 수 있듯이 첨자가 전혀 차단되지 height=1를 사용하는 경우

그러나, 다음과

Screenshot

코드의 적응 라인이 될 때 :

t = Text(self.lowerframe, width=5, height=1, background='#336699', font=('', 12)) 
관련 문제