GUI-Fenster automatisch schließen, und mehr.

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
Pyanfänger
User
Beiträge: 99
Registriert: Mittwoch 28. Dezember 2011, 12:50

Hallo an alle,
wie mein Name schon sagt bin ich Anfänger, ich stelle hier aber keine Fragen weil ich sie für das Studium oder so brauche sondern aus eigenem Willen. In meinem Python-Buch stand nichts darüber drin, und Google hat auch nicht geholfen.
Also die Frage:
Wie kann man machen das z.B. sich ein Fenster öffnet, und durch den time.sleep befehl oder ähnlichem nachdem die Zeit abgelaufen ist wieder schließt? Weil es ist nervig ständig alle Fenster selber zuklicken zu müssen.
Darüber hab ich was gelesen, es aber nicht so wirklich verstanden: WIe man den z.B. "OK" und "Cancel" button durch z.B. Ja und nein ersetzen kann.
Und schließlich...ne da gab es nichts mehr...
EDIT: Achja das dritte war: Wie kann man .py dateien in .exe dateien umwandeln?

WÜrde mich sehr auf Antworten freuen :)
Pyanfänger

PS: Bitte fragt nicht nach meinem Alter...
Achja und wie kann man bei einem z.B. easygui.msgbox fenster ein bild vor dem text erscheinen lassen?
-
BlackJack

@Pyanfänger: Das sind ein bisschen viele unterschiedliche Fragen für einen Beitrag.

Erste Gegenfrage ist: Welches GUI-Toolkit verwendest Du denn? Die Antworten auf GUI-Fragen sind üblicherweise nicht unabhängig davon. Zum Beispiel geht `time.sleep()` normalerweise nicht, weil dass den Programmablauf anhält und damit für die Zeit auch die GUI „einfriert”. Jedes GUI-Toolkit hat in der Regel einen Weg um eine Funktion verzögert über die Hauptschleife des GUI-Toolkits aufrufen zu lassen.

Bei Texten auf Schaltflächen kommt es darauf an, wie die erzeugt wurden und ob der gewählte Weg ein Anpassen erlaubt.

Wie man *.py-Dateien in eine .exe umwandeln kann, ist eine Frage die hier gefühlt schon eine Million mal im Forum gefragt und beantwortet wurde. Wenn Du das haben willst, solltest Du eventuell auch eine andere Programmiersprache als Python ins Auge fassen. :-)

Wie alt bist Du eigentlich? :twisted:
Pyanfänger
User
Beiträge: 99
Registriert: Mittwoch 28. Dezember 2011, 12:50

@BlackJack Danke für die schnelle Antwort :)

Also es ist mir zwar ein bisschen peinlich, aber ich benutze Easygui da ich kein anderes kenne... :oops:
Und ähm... naja wegen dem alter äh.... PN mich bitte ok?

PS: gibt es also kein weg das zu schaffen?(die fragen)
-
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Wie kann man machen das z.B. sich ein Fenster öffnet, und durch den time.sleep befehl oder ähnlichem nachdem die Zeit abgelaufen ist wieder schließt? Weil es ist nervig ständig alle Fenster selber zuklicken zu müssen.
Grundsätzlich halte ich es so wie so für schlechten Stil, dass sich Fenster "magisch" schließen (oder öffnen oder was auch immer). Das sollte man immer dem Nutzer überlassen, weil du ihn sonst bevormundest.

Die Frage erinnert mich auch ein bisschen an früher im Web, als mittels Javascript alle möglichen Fenster aufpoppten, penetrant im Vordergrund waren etc. Das wollte auch keiner und hat dem Ruf von JS geschadet. ;-)

Gruß, noisefloor
BlackJack

@Pyanfänger: Es gibt vielleicht Wege. Die Frage ist, ob die jemand kennt. EasyGUI ist soweit ich das sehe nicht unbedingt verbreitet. Andererseits baut es auf `Tkinter` auf. Damit müsstest Du Dich dann beschäftigen. Und Dich dazu dann auch auf die ereignisbasierte Programmierung einlassen, die bei GUI-Programmierung üblicher ist als der lineare Programmablauf bei Konsolenprogrammen oder EasyGUI.

Für das schliessen eine Fensters nach einer gewissen Zeit müsstest Du eine Funktion die das tut, per `after()`-Methode auf einem `Tkinter`-Widget in die Ereigniswarteschlange einfügen. Da ist vielleicht die Frage ob und wie man bei EasyGUI an ein Widget heran kommt, bevor man die EasyGUI-Funktion aufruft die das Fenster öffnet. Das sieht nach einem Blick in den Quelltext von EasyGUI eher schlecht aus.

Wie man die Texte der Schaltflächen bestimmen kann, steht in der Dokumentation und im Tutorial.

*Vor* dem Text kann man kein Bild platzieren; das ist nicht vorgesehen. EasyGUI bietet ein paar einfache Dialoge, die man in einen linearen Programmablauf einbinden kann, damit man sich nicht wirklich mit GUI-Programmierung beschäftigen muss. Wenn man von dem recht starren, eingeschränkten Vorgaben abweichen will, muss man wohl oder übel in „echte” GUI-Programmierung einsteigen, mit der dort üblichen ereignisbasierten Programmierung.
Pyanfänger
User
Beiträge: 99
Registriert: Mittwoch 28. Dezember 2011, 12:50

@ noisefloor
Danke für die Antwort :)
Naja eigentlich wollte ich das Programm nicht für irgendwelche Leute machen, sondern für mich selber, und es war vorgesehen dass sich viele Fenster öffnen sollen, und bin zu faul sie wegzuklicken :D
Naja, dann probier ichs eben ohne Fenster ;)

@BlackJack
Danke für die Antwort! :D
Kannst du mir den evt. bitte ein anderes GUI, und ein kostenloses Tutorial dazu? :D
Bin im Programmieren leider überhaupt nicht "weit :,(
-
BlackJack

@Pyanfänger: Wie gesagt baut EasiGUI auf `Tkinter` aus der Standardbibliothek auf. Da gibt es in der Dokumentation sowohl Verweise auf weiterführende Informationen, als auch auf Alternativen zu `Tkinter`.

IMHO sollte man aber objektorientierte Programmierung (OOP) halbwegs drauf haben, bevor man an GUI-Programmierung herangeht. Denn das Wissen braucht man dafür. Sonst muss man sich mit OOP, ereignisbasierter Programmierung, und den Eigenheiten eines neuen GUI-Toolkits *auf einmal* herum schlagen.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
BlackJack hat geschrieben:IMHO sollte man aber objektorientierte Programmierung (OOP) halbwegs drauf haben, bevor man an GUI-Programmierung herangeht. Denn das Wissen braucht man dafür. Sonst muss man sich mit OOP, ereignisbasierter Programmierung, und den Eigenheiten eines neuen GUI-Toolkits *auf einmal* herum schlagen.
+1. Zu dem Thema habe ich auch vor kurzem was bei mir im Blog geschrieben.

Gruß, noisefloor
BlackJack

@noisefloor: Zum `SimpleCmd`-Beispiel aus Deinem Blog-Beitrag: Wenn eine `__init__()` nichts weiter tut als die `__init__()` der Basisklasse mit den gleichen Argumenten aufzurufen, mit denen sie selbst aufgerufen wurde, dann kann man die eigene `__init__()` auch einfach weg lassen.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@BlackJack: Thx, ist korrigiert.

Gruß, noisefloor
Pyanfänger
User
Beiträge: 99
Registriert: Mittwoch 28. Dezember 2011, 12:50

@BlackJack,Noisefloor:
Danke für die Zahlreichen Antworten :D
Ich wer mir diese ktinkt(oder so was ähnliches war sdoch :K ) angucken,und beim Blog schau ich auch mal vorbei :)

Bis bald,
Pyanfänger
-
Antworten