Marcando su progtwig Python como alto DPI consciente Windows perfectamente

Solo quería compartir la mejor manera que encontré para hacer esto en caso de que otras personas tuvieran problemas como yo. Si su progtwig Python / Kivy tiene problemas gráficos con el escalamiento de DPI virtual, pruebe este código. Marcará el progtwig como High DPI Aware para usted o el usuario final sin tener que hacer nada. Esto funciona para Windows 10, no estoy seguro acerca de 8 o 7. Me preguntaba si alguien más sabe si esto funcionará para 8 y 7. Para probar esto, agregue el código, configure el DPI, cierre la sesión y vuelva al usuario para el registro marca el cambio de DPI y ejecuta su código desde SHELL. ¡Tu progtwig debe ser DPI ahora!

import winreg from os import path as ospath from os import execl as osexecl from sys import executable as sysex from sys import argv as sysargv if __name__ == '__main__': reg = winreg.ConnectRegistry(None,winreg.HKEY_CURRENT_USER) key = winreg.OpenKey(reg, r"Control Panel\Desktop\WindowMetrics") print(winreg.QueryValueEx(key, 'AppliedDPI')) filefound=True if winreg.QueryValueEx(key, 'AppliedDPI')[0]!=96: key.Close() key = winreg.OpenKey(reg, r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", 0, winreg.KEY_ALL_ACCESS) ##If testing from SHELL also add these values into registry. This is not needed for complied EXEs. Make sure the path is correct or it won't work. winreg.SetValueEx(key, 'C:\python35\pythonw.exe', 0, winreg.REG_SZ, 'HIGHDPIAWARE') winreg.SetValueEx(key, 'C:\python35\python.exe', 0, winreg.REG_SZ, 'HIGHDPIAWARE') ##If Testing from SHELL change YOUREXE.exe to YOURPYFILE.py, otherwise it should be the name of your compiled EXE. exepath=str(ospath.abspath('YourEXE.exe')) try: winreg.QueryValueEx(key, exepath) except: print('FileNotFound') winreg.SetValueEx(key, exepath, 0, winreg.REG_SZ, 'HIGHDPIAWARE') print(winreg.QueryValueEx(key, exepath)) filefound=False print(filefound) key.Close() reg.Close() ##If DPI Scaling was detected and program marked in registry, restart program. This will work in SHELL and your compiled EXE, not IDLE. if filefound==False: print('Restarting') python = sysex osexecl(python, python, * sysargv) else: YourApp().run()