我使用以下代碼來顯示對話框:
from tkinter.ttk import *
from tkinter import messagebox
messagebox.showerror(title='xx', message='xxx')
我使用 PyInstaller 編譯成 exe。今天我發現現代主題的對話框已經不存在了。我下載了一個月前構建的exe二進制檔案,對話框是現代主題的,但是我剛剛構建的已經沒有了。與框相關的代碼完全相同,我在完全相同的系統上運行。我不明白問題出在哪里。
這是一個現代和古老的例子:
老的:

新的: 
如您所見,按鈕完全不同。
兩個二進制檔案都是用 Python 3.9.8 和 PyInstaller 的最新開發版本構建的
uj5u.com熱心網友回復:
與 PyInstaller 維護者討論后自己解決了。(見這里:https : //github.com/pyinstaller/pyinstaller/discussions/6366)
問題在于,在 Python 3.9.8 中,他們洗掉了啟用現代 UI 支持的 Windows 依賴項。這是從 3.9.7 到 3.9.8 的更改。要解決此問題,您必須指定自己的清單檔案并將以下內容添加到其中:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" language="*" processorArchitecture="*" version="6.0.0.0" publicKeyToken="6595b64144ccf1df"/>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"/>
</dependentAssembly>
</dependency>
更新:這是在最新的 PyInstaller 開發版本中修復的:https : //github.com/pyinstaller/pyinstaller/pull/6367
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357574.html
