4.15.2 Publié le 15 janvier 2020
C'est essentiel à savoir. Savoir où se trouve votre fichier PySimpleGUI.py est tout aussi important. Vous pouvez les obtenir en ajoutant ceci en haut de votre fichier et en l'exécutant :
import PySimpleGUI as sg
print(sg)
print(sg.version)
____2y_____ Expérience en programmation Python
_________ Expérience de programmation globale
____oui_____ Avez-vous déjà utilisé un autre framework d'interface graphique Python (tkinter, Qt, etc.) (oui/non c'est bien) ?
J'ai utilisé le code du programme https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Save_Window_As_Image.py pour enregistrer mes images sous forme de fichiers PNG. Cela fonctionne bien.
Le problème se produit après avoir augmenté la résolution de l'écran de 1360x768 à 1920x1080 pour enregistrer des images plus grandes. Seule une partie de l'image a été enregistrée. Le même problème se produit avec le programme de démonstration :
résolution de l'écran d'origine 1360x768 :
Passer à une résolution inférieure à l'original semble fonctionner
Ma question est : quelle partie de python dois-je réinstaller pour que le script fonctionne à nouveau ?
Sinon je suis très satisfait de PySimpleGUI, voir https://meteorspectroscopy.org/2020/03/27/meteor-spectra-analysis-new-version/ pour une description de mon script basé dessus
Demo_Save_Window_As_Image.py voir ci-dessus
Les programmes de démonstration offrent 2 fonctions. Ils fournissent des modèles de conception/des exemples d'utilisation de fonctionnalités ou de fonctions spécifiques de PySimpleGUI. L'autre chose qu'ils font est de montrer comment intégrer votre application à d'autres packages ou bibliothèques. Ils ne sont pas censés être des applications à part entière, mais comme implicite, des démos. Je ne suis pas un expert PIL donc je ne sais pas comment vous conseiller sur la meilleure façon de résoudre votre problème en utilisant le package PIL.
Le programme Meteor Spectra Analysis est assez impressionnant !
Parfois, j'ai aussi des problèmes de résolution d'affichage. Ce n'est pas causé par PySimpleGUI, mais par tkinter.
La fonction TkWinDisplayChanged dans tkinter utilise l'appel API Windows GetDeviceCaps pour obtenir la largeur et la hauteur de l'écran avec les paramètres HORZRES et VERTRES.
Dans GetDeviceCaps , il y a la note :
GetDeviceCaps rapporte les informations fournies par le pilote d'affichage. Si le pilote d'affichage refuse de signaler des informations, GetDeviceCaps calcule les informations en fonction de calculs fixes. Si le pilote d'affichage signale des informations non valides, GetDeviceCaps renvoie les informations non valides. De plus, si le pilote d'affichage refuse de rapporter des informations, GetDeviceCaps peut calculer des informations incorrectes car il suppose soit un DPI fixe (96 DPI) soit une taille fixe (selon les informations que le pilote d'affichage a fournies ou non). Malheureusement, un pilote d'affichage implémenté dans le modèle de pilote d'affichage Windows (WDDM) (introduit dans Windows Vista) empêche GDI d'obtenir les informations. GetDeviceCaps doit donc toujours calculer les informations.
Cela signifie que le résultat n'est pas fiable, donc la plupart du temps, j'ajoute ceci dans mon script avant l'endroit où tkinter a été utilisé, et la plupart du temps cela fonctionne bien. Pour ne pas changer de résolution lors de l'exécution de python ou de tkinter, certaines valeurs seront stockées et conservées inchangées.
import ctypes
ctypes.windll.user32.SetProcessDPIAware() # Set unit of GUI to pixels
Vous pouvez peut-être l'essayer.
@Jason ,
merci beaucoup pour vos conseils. J'ai ajouté les deux lignes à mon code et cela fonctionne pour toutes les résolutions.
C'est ce que j'aime chez PySimpleGUI : j'obtiens toujours des solutions à mes problèmes. Réponse très rapide également. Super!
Martin
Celui-ci est tout @jason990420 !!! Wow merci!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Commentaire le plus utile
@Jason ,
merci beaucoup pour vos conseils. J'ai ajouté les deux lignes à mon code et cela fonctionne pour toutes les résolutions.
C'est ce que j'aime chez PySimpleGUI : j'obtiens toujours des solutions à mes problèmes. Réponse très rapide également. Super!
Martin