4.15.2 Lançado em 15 de janeiro de 2020
É fundamental saber isso. Saber onde seu arquivo PySimpleGUI.py está localizado é tão importante. Você pode obtê-los adicionando isto ao início do seu arquivo e executando-o:
import PySimpleGUI as sg
print(sg)
print(sg.version)
____2y_____ Experiência de programação Python
_________ Experiência de programação geral
____Sim_____ Já usou outro Python GUI Framework (tkinter, Qt, etc) anteriormente (sim / não está bem)?
Usei o código do programa https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Save_Window_As_Image.py para salvar minhas imagens como arquivos PNG. Isso funciona bem.
O problema ocorre depois que aumentei a resolução da tela de 1360x768 para 1920x1080 para salvar imagens maiores. Apenas parte da imagem foi salva. O mesmo problema ocorre com o programa de demonstração:
resolução de tela original 1360x768:
Ir para uma resolução mais baixa do que a original parece funcionar
Minha pergunta é: que parte do python devo reinstalar para fazer o script funcionar novamente?
Caso contrário, estou muito satisfeito com o PySimpleGUI, consulte https://meteorspectroscopy.org/2020/03/27/meteor-spectra-analysis-new-version/ para obter uma descrição do meu script com base nele
Demo_Save_Window_As_Image.py veja acima
Os programas de demonstração oferecem 2 funções. Eles fornecem padrões de design / exemplos de como usar recursos ou funções específicas do PySimpleGUI. A outra coisa que eles fazem é demonstrar maneiras de integrar seu aplicativo a outros pacotes ou bibliotecas. Eles não foram feitos para serem aplicativos completos, mas, como implícito, demos. Não sou um especialista em PIL, então não sei como aconselhar você sobre a melhor forma de resolver seu problema usando o pacote PIL.
O programa Meteor Spectra Analysis é bastante impressionante!
Às vezes também tenho problemas com a resolução da tela. Não é causado por PySimpleGUI, mas tkinter.
A função TkWinDisplayChanged em tkinter usa a chamada de API do Windows GetDeviceCaps para obter a largura e altura da tela com os parâmetros HORZRES e VERTRES.
Em GetDeviceCaps , há uma observação:
GetDeviceCaps relata informações que o driver de vídeo fornece. Se o driver de vídeo se recusar a relatar qualquer informação, GetDeviceCaps calcula a informação com base em cálculos fixos. Se o driver de vídeo relatar informações inválidas, GetDeviceCaps retornará as informações inválidas. Além disso, se o driver de vídeo se recusar a relatar informações, GetDeviceCaps pode calcular informações incorretas porque assume DPI fixo (96 DPI) ou um tamanho fixo (dependendo das informações que o driver de vídeo forneceu e não forneceu). Infelizmente, um driver de vídeo que é implementado no Windows Display Driver Model (WDDM) (introduzido no Windows Vista) faz com que o GDI não obtenha as informações, então GetDeviceCaps deve sempre calcular as informações.
Isso significa que o resultado não é confiável, então, na maioria das vezes, adiciono isso ao meu script antes de o tkinter ser usado e, na maioria das vezes, funciona bem. Para não mudar a resolução quando o python ou tkinter estiver em execução, alguns valores serão armazenados e mantidos inalterados.
import ctypes
ctypes.windll.user32.SetProcessDPIAware() # Set unit of GUI to pixels
Talvez você possa tentar.
@Jason ,
Muito obrigado pelo seu conselho. Eu adicionei as duas linhas ao meu código e funciona para todas as resoluções.
É disso que gosto no PySimpleGUI: sempre consigo soluções para os meus problemas. Também uma resposta muito rápida. Excelente!
Martin
Este é tudo @ jason990420 !!! Uau, obrigado !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Comentários muito úteis
@Jason ,
Muito obrigado pelo seu conselho. Eu adicionei as duas linhas ao meu código e funciona para todas as resoluções.
É disso que gosto no PySimpleGUI: sempre consigo soluções para os meus problemas. Também uma resposta muito rápida. Excelente!
Martin