2011-02-22 2 views
3

Mac에서 tkinter.ttk에 문제가 있습니다. 나는 macports와 python3.1을 사용하고 있습니다. tkinter.ttk를 사용하려고하면 GUI가 매우 오래갑니다.ttk 위젯을 현대적으로 보이게하려면 어떻게해야합니까?

예 :이 대신이
enter image description here
를 얻을 :
enter image description here

내가 사용하는 코드는 다음과 같습니다

from tkinter import * 
from tkinter import ttk 
root = Tk() 
button = ttk.Button(root, text="Hello World").grid() 
root.mainloop() 

내가 필요로 내 컴퓨터에서 정보를 제공 드릴 것입니다 이 질문에 답하십시오. 내가 초보 프로그래머이므로 정보를 어디서 찾을 수 있는지 말해주십시오.

Snow Leopard가 설치된 MacBook 5,2가 있습니다. 어떤 도움을 주시면 감사하겠습니다.
감사합니다, Marlen

질문 업데이트

: 나는 패치이 오류를 해결

TclMacOSXNotifierAddRunLoopMode: Tcl not built with CoreFoundation support Abort trap 

: 나는 + 슈렝 으로이 오류가 만 제안 석영 8.5.9_0 @TK를 설치
https://trac.macports.org/ticket/22954에서. 그러나 내가 경험의 상당한 금액을 가지고, 내가 TTK 연주하지 않은

Traceback (most recent call last): 
    File "hello.py", line 5, in <module> 
    root = Tk() 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/tkinter/__init__.py", line 1632, in __init__ 
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 
_tkinter.TclError: Can't find a usable tk.tcl in the following directories: 
    /opt/local/lib/tcl8.5/tk8.5 /opt/local/lib/tcl8.5/tk8.5/Resources/Scripts /opt/local/lib/tk8.5 /opt/local/lib/tk8.5/Resources/Scripts /opt/local/Library/Frameworks/Python.framework/Versions/3.1/Resources/Python.app/Contents/lib/tk8.5 /opt/local/Library/Frameworks/Python.framework/Versions/3.1/Resources/Python.app/Contents/lib/tk8.5/Resources/Scripts /opt/local/Library/Frameworks/Python.framework/Versions/3.1/Resources/Python.app/lib/tk8.5 /opt/local/Library/Frameworks/Python.framework/Versions/3.1/Resources/Python.app/Contents/library 

/opt/local/lib/tk8.5/tk.tcl: version conflict for package "Tk": have 8.5.7, need exactly 8.5.9 
version conflict for package "Tk": have 8.5.7, need exactly 8.5.9 
    while executing 
"package require -exact Tk 8.5.9" 
    (file "/opt/local/lib/tk8.5/tk.tcl" line 20) 
    invoked from within 
"source /opt/local/lib/tk8.5/tk.tcl" 
    ("uplevel" body line 1) 
    invoked from within 
"uplevel #0 [list source $file]" 


This probably means that tk wasn't installed properly. 
+0

시도 이 작업을 시작하게되면 더 이상 관련성이 없어져서 너무 오래되어 @schlenk의 답변으로 표시하게됩니다. 응답에 가장 많은 작업을 넣었 기 때문입니다. 질문. –

답변

3

문제는 MacPorts를 수 있습니다. ttk의 기초로 사용할 수있는 세 가지 버전의 Tk가 있습니다. 스크린 샷은 아쿠아 기반 Tk가 아닌 구형 X11 Tk와 비슷합니다. 1. X11을 통해 Tk. TK에 코코아 컴파일 3. 탄소 'windowingsystem의 -aqua'로 컴파일 2. TK에

그래서 당신은 시도해야 하나 MacPorts를 통해 Tk의 변형 '수정'을 구축하거나 (예를 들어 ActiveStates)을 일부 미리 만들어진 버전을해야한다고 이미 올바른 버전이 구축되어 있습니다.

그래서 시도 :

sudo port build tk @8.5.9+quartz 

좀 더 지침 여기 자습서에서보세요 : http://www.tkdocs.com/tutorial/install.html#installmac

+0

고마워, 바로 이걸 시도 할께. –

+0

** tk @ 8.5.9_0 + quartz (활성) ** hello.py (내 질문에 해당하는 코드)를 실행하면 ** TclMacOSXNotifierAddRunLoopMode 오류가 발생합니다. Tcl은 CoreFoundation 지원으로 빌드되지 않음 ** 트랩을 중단합니다. 이 문제를 해결하면 해결책을 게시 할 것입니다. –

+0

https://trac.macports.org/ticket/22954에서 패치 지침을 따라이 오류를 수정했습니다. 물론 이것은 또 다른 오류를 만들었습니다 ... 오류가 상당히 복잡하기 때문에 제 질문을 업데이트 할 것입니다. –

-1

: 이것은 새로운 오류를 생성

$ cd /opt/local/var/macports/sources/rsync.macports.org/release/ports/lang/tcl 
$ sudo patch < ~/Downloads/tcl.2.patch 
$ sudo port install tcl 

: 나는 편지로 지시 (그들이)을 따라 tkinter와. 나는 당신이 스타일 키워드 인수를 작성해야한다고 믿습니다.

나는 이렇게 보일 것이라고 생각합니다. 일부 관련 문서에

from tkinter import * 
from tkinter import ttk 
root = Tk() 
button = ttk.Button(root, text="Hello World", style="somestyle").grid() 
root.mainloop() 

링크 : http://docs.python.org/release/3.1.3/library/tkinter.ttk.html

+0

나는 제대로 설명하지 못했을 까봐 두렵다. 기본값은 이미지 B처럼 보입니다. 대신 이미지 A처럼 보입니다. 왜? –

2

내가 더 이상 심지어 내가하려고했던 컴퓨터가없는

style = ttk.Style() 
print(style.theme_names()) 
style.theme_use('default') # change 'default' to something better 
관련 문제