4.15.2 Lanzado el 15 de enero de 2020
Es fundamental saberlo. Saber dónde se encuentra su archivo PySimpleGUI.py es igualmente importante. Puede obtenerlos agregando esto al principio de su archivo y ejecutándolo:
import PySimpleGUI as sg
print(sg)
print(sg.version)
____2y_____ Experiencia en programación Python
_________ Experiencia de programación en general
____sí_____ ¿Ha usado otro marco de interfaz gráfica de usuario de Python (tkinter, Qt, etc.) anteriormente (sí / no está bien)?
Usé el código del programa https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Save_Window_As_Image.py para guardar mis imágenes como archivos PNG. Esto funciona bien.
El problema ocurre después de que aumenté la resolución de pantalla de 1360x768 a 1920x1080 para guardar imágenes más grandes. Solo se guardó una parte de la imagen. El mismo problema ocurre con el programa de demostración:
resolución de pantalla original 1360x768:
Ir a una resolución más baja que la original parece funcionar
Mi pregunta es: ¿qué parte de Python tengo que reinstalar para que el script vuelva a funcionar?
De lo contrario, estoy muy satisfecho con PySimpleGUI, consulte https://meteorspectroscopy.org/2020/03/27/meteor-spectra-analysis-new-version/ para obtener una descripción de mi script basado en él.
Demo_Save_Window_As_Image.py ver arriba
Los programas de demostración ofrecen 2 funciones. Proporcionan patrones de diseño / ejemplos de cómo usar características o funciones específicas de PySimpleGUI. La otra cosa que hacen es demostrar formas de integrar su aplicación con otros paquetes o bibliotecas. No están destinadas a ser aplicaciones completas, sino demostraciones implícitas. No soy un experto en PIL, por lo que no sé cómo aconsejarle sobre cómo resolver mejor su problema utilizando el paquete PIL.
¡El programa Meteor Spectra Analysis es bastante impresionante!
A veces también tengo problemas con la resolución de la pantalla. No es causado por PySimpleGUI, sino tkinter.
La función TkWinDisplayChanged en tkinter usa la llamada a la API de Windows GetDeviceCaps para obtener el ancho y alto de la pantalla con los parámetros HORZRES y VERTRES.
En GetDeviceCaps , hay una nota:
GetDeviceCaps informa la información que proporciona el controlador de pantalla. Si el controlador de pantalla se niega a informar cualquier información, GetDeviceCaps calcula la información basándose en cálculos fijos. Si el controlador de pantalla informa información no válida, GetDeviceCaps devuelve la información no válida. Además, si el controlador de pantalla se niega a informar información, GetDeviceCaps podría calcular información incorrecta porque asume DPI fijo (96 DPI) o un tamaño fijo (dependiendo de la información que el controlador de pantalla proporcionó y no proporcionó). Desafortunadamente, un controlador de pantalla que se implementa en el Modelo de controlador de pantalla de Windows (WDDM) (introducido en Windows Vista) hace que GDI no obtenga la información, por lo que GetDeviceCaps siempre debe calcular la información.
Significa que el resultado no es confiable, por lo que la mayoría de las veces, agrego esto a mi script antes de donde se usaba tkinter, y la mayoría de las veces funciona bien. Para no cambiar la resolución cuando python o tkinter se ejecutan, algunos valores se almacenarán y se mantendrán sin cambios.
import ctypes
ctypes.windll.user32.SetProcessDPIAware() # Set unit of GUI to pixels
Quizás puedas probarlo.
@Jason ,
Muchas gracias por tu consejo. Agregué las dos líneas a mi código y funciona para todas las resoluciones.
Eso es lo que me gusta de PySimpleGUI: siempre obtengo soluciones a mis problemas. También respuesta muy rápida. ¡Excelente!
Martín
Este es todo @ jason990420 !!! ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Wow gracias!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Comentario más útil
@Jason ,
Muchas gracias por tu consejo. Agregué las dos líneas a mi código y funciona para todas las resoluciones.
Eso es lo que me gusta de PySimpleGUI: siempre obtengo soluciones a mis problemas. También respuesta muy rápida. ¡Excelente!
Martín