PySimpleGUI - Maximize

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kirikkayis
User
Beiträge: 85
Registriert: Freitag 18. Januar 2019, 08:02

Hey,

ich benutze für eine kleine GUI "PythonSimpleGUI".

Mein Code sieht wie folgt aus:

Code: Alles auswählen

import PySimpleGUI as sg
sg.theme('Light Brown 13')  

layout = [  [sg.Text('Path')],
            [sg.Input(), sg.FileBrowse()], 
            [sg.Text('Target')],
            [sg.In(), sg.FolderBrowse()],
            [sg.Text('Filename')],
            [sg.In()],
            [sg.Text('Number')],
            [sg.In()],
            [sg.Radio('1. Mapping',"RADIO1", default=True),sg.Radio('2. Mapping',"RADIO1"),sg.Radio('3. Mapping',"RADIO1")],
            [sg.OK()]]
           
window = sg.Window('Mapping', layout, size=(600,800))
Nun würde ich gerne das Fenster im Vollbildmodus haben.
Jemand eine Idee?
mit
window.Maximize()
funktioniert es leider nicht.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Was heißt "funktioniert nicht"? Wie sieht der Code aus, was für eine Fehlermeldung inklusive Traceback kommt?
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Was heisst ”funktioniert” nicht? Die Methode gibt es und die sollte grundsätzlich das machen was Du willst. Die Frage ist also wo/wie Du das integriert hast und was darauf hin passiert und/oder auf der Konsole ausgegeben wird.

Ich würde das übrigens klein schreiben, weil sich das Projekt jetzt doch an PEP8 halten will. So wirklich vertrauenswürdig finde ich das Projekt an sich aber schon nicht. Da steht zum Beispiel das bei Linux nach einem `maximize()` nicht mehr alles wie erwartet funktioniert. Mehrzeilige Texteingaben beispielsweise gar nicht mehr. WTF‽ Um das ohne Callbacks und OOP benutzbar zu machen versuchen die auch die Tk-Hauptschleife mit `update()` selbst nach zu basteln, was man eigentlich nicht machen sollte, weil man die nicht 100% von ”aussen” nachbauen kann.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Kirikkayis
User
Beiträge: 85
Registriert: Freitag 18. Januar 2019, 08:02

Hey,
Da steht zum Beispiel das bei Linux nach einem `maximize()` nicht mehr alles wie erwartet funktioniert. Mehrzeilige Texteingaben beispielsweise gar nicht mehr. WTF‽
Das habe ich tatsächlich auch gelesen.

Mein Code sieht wie folgt aus ...

Code: Alles auswählen

import PySimpleGUI as sg
sg.theme('Light Brown 13')  

layout = [  [sg.Text('Path')],
            [sg.Input(), sg.FileBrowse()], 
            [sg.Text('Target')],
            [sg.In(), sg.FolderBrowse()],
            [sg.Text('Filename')],
            [sg.In()],
            [sg.Text('Number')],
            [sg.In()],
            [sg.Radio('1. Mapping',"RADIO1", default=True),sg.Radio('2. Mapping',"RADIO1"),sg.Radio('3. Mapping',"RADIO1")],
            [sg.OK()]]
           
window = sg.Window('Mapping', layout, size=(600,800))
window.maximize()
--> Es gibt keine Fehlermeldung oder sonstiges. Die Anwendung startet einfach nicht im Vollbild.
Benutzeravatar
JakobDev
User
Beiträge: 63
Registriert: Mittwoch 17. Juli 2019, 17:20

Dann bleibt die wohl nichts anderes übrig, als den Bug zu melden. Wenn laut Dokumentation das Fenster durch diese Fuktion in den Vollbild gehen sollte, aber nichts passiert, handelt es sich um einen Bug, an dem du nichts ändern kannst.

Ich würde dir trotzdem empfehlen, dir ein besseres Toolkit wie tkinter, wxWidgets, GTK oder Qt zu verwenden. Das zu lernen ist im Gegensatz zum Nutzen nicht so viel Arbeit und du hast weit mehr Möglichkeiten. Ich persönlich würde dir PyQt empfehlen.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@Kirikkayis und wenn du die Angabe der Größe des Fensters weg lässt?
Kirikkayis
User
Beiträge: 85
Registriert: Freitag 18. Januar 2019, 08:02

@sparrow, selbst da funktioniert es nicht.

Ich hab jetzt etwas "gemurkst" ... ich frage die Fenstergrößen einfach ab und schreibe diese in size=(x,y) ....
Antworten