3

Macのtkinter.ttkに問題があります。私はmacportsとpython3.1を使用しています。tkinter.ttkを使おうとすると、非常に古く見えるGUI要素が表示されます。

例:私はこれを取得しますこれ
ここに画像の説明を入力してください
の代わりに:
ここに画像の説明を入力してください

私が使用したコードは次のとおりです。

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

この質問に答えるために必要な私のコンピューターからの情報を提供させていただきます。私は初心者のプログラマーなので、その情報の入手先を教えてください。

SnowLeopardがインストールされたMacbook5,2を持っています。どんな助けでもいただければ幸いです。
ありがとう、マーレン

質問の更新: schlenkがこのエラーを取得するためだけに提案したように 、 tk @ 8.5.9_0 + quartzをインストール
ました:

TclMacOSXNotifierAddRunLoopMode: Tcl not built with CoreFoundation support Abort trap

https://trac.macports.org/ticket/22954のパッチでこのエラーを修正しました。私は手紙の指示に従いました(彼らはそうです):

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

これにより、次のような新しいエラーが発生しました。

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.
4

3 に答える 3

3

問題はmacportsである可能性があります。ttkの基礎として使用できるTkには3つのバージョンがあります。スクリーンショットは、アクアベースのTkではなく、古いX11Tkによく似ています。1.X11経由のTk。2.CarbonでコンパイルされたTk'windowingsystem-aqua'3.CocoaでコンパイルされたTk

したがって、macportsを介してTkバリアント「quartz」をビルドするか、適切なバージョンがすでにビルドされているビルド済みバージョン(ActiveStatesなど)を入手する必要があります。

だから試してみてください:

sudo port build tk @8.5.9+quartz

詳細なガイダンスについては、こちらのチュートリアルをご覧ください: http ://www.tkdocs.com/tutorial/install.html#installmac

于 2011-02-25T22:37:32.967 に答える
2

試す

style = ttk.Style()
print(style.theme_names())
style.theme_use('default') # change 'default' to something better
于 2012-05-03T01:19:01.533 に答える
-1

私は ttk で遊んだことはありませんが、tkinter についてはかなりの経験があります。style キーワード引数を入力する必要があると思います。

こんな感じになると思います。

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

于 2011-02-23T08:26:36.760 に答える