2017-11-24 3 views
1

이전 Tcl/Tk 응용 프로그램 (작성한 20 년 전 ...)과 수행 할 작업과 수행 방법에 대한 조언은 크게 감사하겠습니다. .현대 Tcl/Tk 응용 프로그램을 현대 표준에 적용하기위한 조언

당분간 나는 코드를 적용 할 수는 있지만 작동은 다소 어둡습니다 (응용 프로그램이 Linux와 MacOS에서 모두 실행되어야하기 때문에 외관이 매우 만족스럽지 않습니다).

이 점을 개선하기 위해 Tk에서 테마가있는 위젯과 그리드 지오메트리 관리자의 도입이라는 두 가지 중요한 변화를 발견했습니다.

Q1) Look &보기의 엄격한 관점에서 그리드 방식으로 전환하는 것이 "좋은 생각"입니까 (큰 작업)? 그리드와 팩을 혼합 할 수 있습니까 (일부 동적 GUI 파트의 경우 팩 접근 방식이 더 간단하기 때문에)?

모양이 &인데 주제 위젯을 사용하려고했지만 (ttk : label, ...으로 레이블 교체)하지만 아직 만족스럽지 않습니다.

예를 들어, 응용 프로그램에는 제목 영역 (선택한 메뉴 옵션에 따라 여러 제목이 포함될 수 있음)이 있습니다. 제목은 여러 줄 수 있습니다 (그리고 .c.t configure -text "new title" 여러 번 수정 될 수 있습니다)

ttk::style theme use clam 

ttk::frame .c -padding "4" 
grid .c -sticky nsew 

ttk::label .c.t -relief groove -borderwidth 4 -justify center -text \ 
    "this is a title.\nAnd its subtittle\nHow to increase line spacing ?\nWhat about font size ?" 
grid .c.t 

: 기본적으로 나는 그것을 만들었습니다. 결과는 내가 두 라인 사이의 공간을 늘릴 수있는 방법

enter image description here

Q2)인가? (그리고 어떻게 글꼴 크기를 늘릴 수 있습니까?)

Q3) 텍스트 위젯을 보았지만 주제별 버전을 찾을 수 없었습니다. 내가 뭔가를 놓친 건가? 당신이 맞는 볼

덕분에 많은

답변

1

질문 1) 예, 팩 및 그리드를 혼합 할 수 있습니다. 같은 프레임 안에 있지 않습니다. 어떤 사람들은 그리드를 독점적으로 사용하고 다른 사람들은 그리드를 사용하기를 원합니다.

here의 주제가 있습니다. 리눅스에서 '아크'와 '클리어 뷰'테마가 멋지게 보인다는 것을 알게되었습니다. Mac OS X의 경우 테마 ' '을 기본 '아쿠아'로 둡니다.

q2) font 명령으로 새 글꼴을 만들 수 있습니다. ttk 위젯의 경우 ttk::style 명령을 사용하여 (대부분의 경우) 적용 할 수 있습니다.

ttk::label의 경우, 표시되는 글꼴에 관계없이 줄 간격이 설정됩니다.
text 명령을 사용하면 선 간격을보다 세부적으로 제어 할 수 있습니다.

package require Tk 
ttk::style theme use clam 

ttk::frame .c -padding "4" 
grid .c -sticky nsew 

font create newfont 
font configure newfont -size 13 

ttk::style configure New.TLabel \ 
    -font newfont \ 
    -justify left 
ttk::label .c.t -relief groove -borderwidth 4 -text \ 
    "this is a\nmultiline text.\nHow to increase line spaceing ?" \ 
    -style New.TLabel 
grid .c.t 

Q3)를 text 명령은 대응 TTK 위젯이 (나)리스트 박스하지 않는다.

+0

'text' 위젯은 실제로 복잡하고 표시 방법은 사실상 내용에 따라 결정됩니다. ('canvas'는 또 다른 것입니다.) ttk :: frame과 wrapper를 사용하여 ttk :: text처럼 보일 수 있도록 몇 가지 트릭을 만들 수 있습니다. C에서 엄청난 양의 일이 진짜 일을합니다! –

+0

'listbox' 대신'ttk :: treeview'를 사용할 수 있습니다. 그리고'text'에 테마 테두리가있는 ttk 프레임에'text'를 넣는 것에 대한 좋은 아이디어가 있습니다 : http://wiki.tcl-lang.org/14796 –