WindowsのTkメッセージボックスは、システム提供のメッセージボックスです。 TkはTkボタンとフレームを使ってメッセージボックスを作成するのではなく、Windows APIによって提供されるストックダイアログを表示します。
ここでレポートをチェックするために、私はTcl/Tk 8.6、Python 3.4、Powershellを起動し、それぞれにメッセージボックスを表示させました。ご覧のとおり、Tcl/Tkは期待通りに見えますが、PythonとPowershellの両方が古いスタイルの非テーマのルックアンドフィールにデフォルト設定しています。
この理由は、これを起動する実行ファイルに埋め込まれたマニフェストをどうする可能性が最も高いです。 Tcl/Tk wish
実行可能ファイルには、アプリケーションがテーマ共通コントロールライブラリをサポートすることを示すマニフェストリソースが含まれています。 python.exeファイルとpythonw.exeファイルには、このようなリソースはありません。必要なマニフェストは、tkinterによって使用されるTk86.dllファイルに埋め込まれていますが、これは実行可能ファイルと関連付ける必要があると思います。 Visual Studioでpythonw.exeファイルを開き、既存のRT_MANIFESTリソースをTk86.dllから抽出したものに置き換えて、この仮説をテストしました。代わりに、適切なマニフェストのPythonのTkinterのメッセージボックスがテーマに適切に来ると:
たぶんこのマニフェストは動作していないようでした実行ファイルとしてではなく、このテストでは、同じフォルダ内のXMLファイルとして提供することができます。実行可能なリソースに実際にマニフェストを埋め込まなければなりませんでした。
マニフェストリソースの詳細については、"Enabling Visual Styles"を参照してください。 docsから
'ttk'はすべてのウィジェットを含むわけではなく、多くのウィジェットにはオプションがありません。 – TigerhawkT3
モジュール 'ttk'の要素のみをテーマにすることができます。 'ttk' =' themed tk' – furas
'ttk'がWindows 10のレイアウトを表示しますが、' Tkinter' noを表示する理由はTkinterがWindows 10にアップデートされていないためですか? – Xesa