爲Windows的Python GUI設置正確的DPI感知,出現__main__.pyinstallerimporterror failed to load dynlib/dll.

先上SO 原問題(本人提出的):__main__.pyinstallerimporterror-failed-to-load-dynlib-dll-shcore.,博客寫的有點晚。

本人做了一個tkinter GUI的程序,爲了解決縮放和鼠標座標的問題,使用了

import ctypes
ctypes.windll.shcore.SetProcessDpiAwareness(2)

是可以在我的電腦上正常工作的(Windows 10)。

然後換了Windows 7,出現瞭如題中出現的問題。出現問題的原因是(個人理解):

Win10和Win7設置縮放的DLL文件不同(WINAPI的接口不同),所以當放入win7的機器會出現找不到DLL文件的情況。

正如答案所表示以及MSDN的官方文檔,代碼應該爲:

import ctypes
 try: # >= win 8.1
    ctypes.windll.shcore.SetProcessDpiAwareness(2)
except: # win 8.0 or less
    ctypes.windll.user32.SetProcessDPIAware()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章