Pysimplegui: [ Amélioration/Bogue/Question] Mon problème est...

Créé le 21 juin 2020  ·  4Commentaires  ·  Source: PySimpleGUI/PySimpleGUI

Type de problèmes (amélioration, erreur, bogue, question)

Question / Amélioration

Système opérateur

Win10, Raspienne

Version Python

3.7

Port et version de PySimpleGUI

Port tkinter, 4.20.0


4.20.0 Publié le 6 juin 2020

Vos niveaux d'expérience en mois ou en années

1 an_________ d'expérience en programmation Python
45 ans_________ d'expérience en programmation dans l'ensemble
oui_________ Avez-vous déjà utilisé un autre framework d'interface graphique Python (tkinter, Qt, etc.) (oui/non c'est bien) ?

Vous avez terminé ces étapes :

  • [ x] Lire les instructions sur la façon de déposer un problème
  • [ x] Recherche dans la documentation principale http://www.PySimpleGUI.org pour votre problème
  • [ x] Recherche dans le readme pour votre port spécifique sinon PySimpleGUI (Qt, WX, Remi)
  • [ x] Recherche de programmes de démonstration similaires à votre objectif http://www.PySimpleGUI.com
  • [ x] Notez qu'il existe également des programmes de démonstration sous chaque port sur GitHub
  • [ x] Exécutez votre programme en dehors de votre débogueur (à partir d'une ligne de commande)
  • [ x] Recherche dans les problèmes (ouverts et fermés) pour voir s'ils ont déjà été signalés
  • [ ]x Réessayez en mettant à niveau votre fichier PySimpleGUI.py pour utiliser le fichier actuel sur GitHub. Votre problème a peut-être déjà été résolu mais n'est pas encore sur PyPI.

Description du problème / Question / Détails

Mon application est pour une interface graphique sur framboise avec des éléments mis à jour en temps réel (fenêtre async)
UPS2-GUI
. Cela fonctionne bien, mais certaines fonctionnalités supplémentaires dans pysimplegui seraient géniales :
Question1 : Veuillez fournir une liste d'attributs d'éléments de texte pouvant être mis à jour par window['xxkey'].update().

Question2 : A quoi sert le _f_ in window[f'xxkey'] apparaissant dans certains de vos exemples

Proposition d'amélioration : importante pour la mise à jour dynamique, c'est par exemple 'border_width' sur un texte.

exemples de travail :
fenêtre['K_BATT_STATE'].update('LOW')
window[f'K_BATT_V'].update(background_color='green')

exemple ne fonctionne pas :
fenêtre[f'K_BATT_V'].update(border_width=2)

Commentaire le plus utile

Comme je le savais

  • Options des attributs d'élément de texte affichés dans Update(value=None, background_color=None, text_color=None, font=None, visible=None).
  • Le seul exemple de démonstration utilisant window[f'...] est Demo_Column_Elem_Swap_Entire_Window.py . f-string utilisé pour le remplacement de sous-chaîne par une variable.

Un échantillon pour vous.

import PySimpleGUI as sg

layout = [[sg.Text('Hello World !', font=('Courier New',20), key='TEXT1')],
          [sg.Text('dlroW olleH !', font=('Courier New',20), key='TEXT2')]]
window = sg.Window('Text', layout, finalize=True)
window['TEXT1'].Widget.configure(borderwidth=5, relief='solid')

while True:

    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break

window.close()

Tous les 4 commentaires

La documentation et les chaînes doc intégrées vous indiquent exactement ce qui est disponible pour la méthode de mise à jour de chaque élément. Jetez un œil à la référence d'appel détaillée.
http://calls.PySimpleGUI.org
S'il n'y a pas quelque chose, vous avez plusieurs choix. Vous pouvez manipuler directement le Widget sous-jacent, ou ouvrir une demande d'amélioration.,

Comme je le savais

  • Options des attributs d'élément de texte affichés dans Update(value=None, background_color=None, text_color=None, font=None, visible=None).
  • Le seul exemple de démonstration utilisant window[f'...] est Demo_Column_Elem_Swap_Entire_Window.py . f-string utilisé pour le remplacement de sous-chaîne par une variable.

Un échantillon pour vous.

import PySimpleGUI as sg

layout = [[sg.Text('Hello World !', font=('Courier New',20), key='TEXT1')],
          [sg.Text('dlroW olleH !', font=('Courier New',20), key='TEXT2')]]
window = sg.Window('Text', layout, finalize=True)
window['TEXT1'].Widget.configure(borderwidth=5, relief='solid')

while True:

    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break

window.close()

Merci beaucoup Jason !

Lorsqu'une fonctionnalité d'un "widget" sous-jacent n'est pas exposée via les API PySimpleGUI, vous pouvez utiliser la variable membre .Widget pour accéder directement au widget du framework GUI sous-jacent. Vous perdez la portabilité d'un framework à un autre, mais ce n'est généralement pas un problème dans ces cas.

Heureux que vous ayez une solution qui vous convient.

Salut Jason, salut Mike
Merci beaucoup! Les deux réponses sont utiles et ont mis fin à ma souffrance :-) en quelques minutes.
Pysimplegui est un excellent produit avec un support incroyable !
Dès que mon projet sera utilisable, je le publierai sur mon compte git. Il s'agit d'une alimentation sans coupure et à haut rendement pour tous les modèles de framboise 3++ et pi zero et comprend une conception matérielle et logicielle complète.

Cette page vous a été utile?
0 / 5 - 0 notes