Pysimplegui: [ Verbesserung/Fehler/Frage] Mein Problem ist...

Erstellt am 21. Juni 2020  ·  4Kommentare  ·  Quelle: PySimpleGUI/PySimpleGUI

Art der Probleme (Erweiterung, Fehler, Bug, Frage)

Frage / Verbesserung

Betriebssystem

Win10, Raspian

Python-Version

3.7

PySimpleGUI-Port und -Version

tkinter-Port, 4.20.0


4.20.0 Veröffentlicht am 6. Juni 2020

Ihre Erfahrungsstufen in Monaten oder Jahren

1 Jahre_________ Python-Programmiererfahrung
45 Jahre_________ Programmiererfahrung insgesamt
yes_________ Haben Sie zuvor ein anderes Python-GUI-Framework (tkinter, Qt usw.) verwendet (ja/nein ist in Ordnung)?

Sie haben diese Schritte abgeschlossen:

  • [ x] Lesen Sie die Anweisungen zum Einreichen eines Problems
  • [ x] Durchsuchte Hauptdokumente http://www.PySimpleGUI.org nach Ihrem Problem
  • [ x] Durchsuchte die Readme nach Ihrem spezifischen Port, wenn nicht PySimpleGUI (Qt, WX, Remi)
  • [ x] Nach Demoprogrammen gesucht, die Ihrem Ziel ähnlich sind http://www.PySimpleGUI.com
  • [ x] Beachten Sie, dass es unter jedem Port auf GitHub auch Demoprogramme gibt
  • [ x] Führen Sie Ihr Programm außerhalb Ihres Debuggers aus (von einer Befehlszeile aus)
  • [ x] Probleme durchsucht (offen und geschlossen), um zu sehen, ob sie bereits gemeldet wurden
  • [ ]x Versuchen Sie es erneut, indem Sie Ihre Datei PySimpleGUI.py aktualisieren, um die aktuelle auf GitHub zu verwenden. Ihr Problem wurde möglicherweise bereits behoben, befindet sich jedoch noch nicht auf PyPI.

Problembeschreibung / Frage / Details

Meine App ist für eine GUI auf Himbeere mit Elementen, die in Echtzeit aktualisiert werden (asynchrones Fenster)
UPS2-GUI
. Es funktioniert gut, aber einige zusätzliche Funktionen in pysimplegui wären großartig:
Frage1 : Bitte stellen Sie eine Liste mit Textelementattributen bereit, die von window['xxkey'].update() aktualisiert werden können.

Frage 2 : Was ist der Zweck des _f_ in window[f'xxkey'], das in einigen Ihrer Beispiele erscheint?

Verbesserungsvorschlag : Wichtig für dynamisches Update ist zB 'border_width' auf einem Text.

Arbeitsbeispiele:
Fenster['K_BATT_STATE'].update('LOW')
window[f'K_BATT_V'].update(background_color='green')

nicht funktionierendes Beispiel:
window[f'K_BATT_V'].update(border_width=2)

Hilfreichster Kommentar

Wie ich weiß

  • Optionen von Textelementattributen, die in Update angezeigt werden (value=None, background_color=None, text_color=None, font=None, visible=None).
  • Das einzige Demo-Beispiel für die Verwendung von window[f'...] ist Demo_Column_Elem_Swap_Entire_Window.py . f-Zeichenfolge, die zum Ersetzen von Teilzeichenfolgen durch eine Variable verwendet wird.

Ein Muster für Sie.

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()

Alle 4 Kommentare

Die Dokumentation und die integrierten Doc-Strings sagen Ihnen genau, was für die Update-Methode jedes Elements verfügbar ist. Sehen Sie sich die detaillierte Anrufreferenz an.
http://calls.PySimpleGUI.org
Wenn etwas nicht vorhanden ist, haben Sie mehrere Möglichkeiten. Sie können das zugrunde liegende Widget direkt bearbeiten oder eine Verbesserungsanfrage öffnen.,

Wie ich weiß

  • Optionen von Textelementattributen, die in Update angezeigt werden (value=None, background_color=None, text_color=None, font=None, visible=None).
  • Das einzige Demo-Beispiel für die Verwendung von window[f'...] ist Demo_Column_Elem_Swap_Entire_Window.py . f-Zeichenfolge, die zum Ersetzen von Teilzeichenfolgen durch eine Variable verwendet wird.

Ein Muster für Sie.

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()

Vielen Dank Jason!

Wenn eine Funktion eines zugrunde liegenden "Widgets" nicht über die PySimpleGUI-APIs verfügbar gemacht wird, können Sie die Membervariable .Widget , um direkt auf das Widget des zugrunde liegenden GUI-Frameworks zuzugreifen. Sie verlieren die Portabilität von einem Framework zu einem anderen, aber das ist in diesen Fällen im Allgemeinen kein Problem.

Schön, dass Sie eine Lösung haben, mit der Sie einverstanden sind.

Hallo Jason, Hallo Mike
Vielen Dank! Beide Antworten sind hilfreich beendete mein Leiden :-) innerhalb von Minuten.
Pysimplegui ist ein großartiges Produkt mit einer unglaublichen Unterstützung!
Sobald mein Projekt nutzbar ist, werde ich es auf meinem Git-Account veröffentlichen. Es ist ein unterbrechungsfreies und hocheffizientes Netzteil für alle Raspberry-Modelle 3++ und pi zero und beinhaltet ein komplettes Hardware- und Software-Design.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

OPMUSER picture OPMUSER  ·  5Kommentare

ncotrb picture ncotrb  ·  4Kommentare

mozesa picture mozesa  ·  4Kommentare

flowerbug picture flowerbug  ·  4Kommentare

MikeTheWatchGuy picture MikeTheWatchGuy  ·  3Kommentare