2016-10-23 5 views
0

저는 tk를 사용하여 작은 GUI 스크립트를 만들려고합니다. 사용자 입력을 기반으로 계산 한 후 listbox을 사용하여 인쇄하려는 간단한 문자열을 생성하지만 정렬 문제로 어려움을 겪고있었습니다. 목록 상자의 텍스트 정렬 문제

난이 서식 에러 여부를 확인하는 동시에 콘솔에 출력을 인쇄하려고 :

for loop : 
    string = foo(x) 
    listbox.insert(END, string) 
    print string 

IMAGE

+1

목록 상자에서 고정 폭 글꼴을 사용해야합니다. –

+0

나는 폰트를 바꿨다고 생각하지 않는다. 콘솔 출력에서 ​​모두 동일한 크기임을 명확하게 알 수 있습니다. –

+0

글꼴을 변경하지 않았다면 가변 너비 글꼴을 사용했을 가능성이 큽니다. 나는 tkinter가 가변 너비 글꼴로 기본 설정되어 있다고 확신한다. 두 윈도우가 다른 글꼴을 사용하고 있음을 분명히 볼 수 있습니다 (예 : 0 문자보기). –

답변

1

문제는 본체가 고정 폭 폰트를 사용하는 것으로하지만 목록 상자는 가변 폭 글꼴을 사용합니다. 가변 너비 글꼴에서 "i"(소문자 I) 및 "l"(소문자 L)과 같은 문자는 "M"및 "0"과 같은 문자의 가로 공간을 적게 차지합니다.

콘솔에서와 같이 문자를 목록 상자에 정렬하려면 고정 너비 글꼴을 사용해야합니다. font 속성을 통해 목록 상자에서 사용되는 글꼴을 구성 할 수 있습니다.

Tkinter는 몇 가지 기본 글꼴을 제공하며 기본 고정 너비 글꼴의 이름은 "TkFixedFont"입니다. 이 기본 글꼴은 다른 위젯에서 사용하는 기본 가변 너비 글꼴과 거의 동일한 세로 높이입니다. 선택되는 정확한 글꼴은 다른 플랫폼에서 다를 수 있지만 일반적으로 택배의 변형입니다. 예를 들어

:

import Tkinter as tk 
root = tk.Tk() 
listbox = tk.Listbox(root, font="TkFixedFont") 

당신이 글꼴 가족과 크기에 대한 명시하고자하는 경우

, 당신은 문자열, 튜플로 그를 제공하거나 글꼴 객체로 할 수 있습니다. 예를 들어 크기가 18 인 택배 글꼴을 선택하면 font="Courier 18"으로 지정할 수 있습니다.

listbox = tk.Listbox(root, font="Courier 18") 

글꼴에 대한 자세한 내용은 TkDocs tutorial on fonts, colors and images 및 섹션 Widget Styling on effbot을 참조하십시오.

+0

감사를 말하지 않기 때문에 코멘트를 알고 있습니다. 그러나 나는 위선적 인 말을하지 않는다 (repo <15). –

+0

Bryan의 답변으로 문제가 해결 된 경우 녹색 체크 표시가있는 '수락 됨'으로 표시해야 다른 사용자가 같은 유형의 질문을 찾을 때마다 올바른 답변을 찾을 수 있습니다. –