GUI erstellen

  • Hallo Zusammen,

    ich hab ein kleines Programm geschrieben was ich jetzt etwas optimieren möchte.

    Es geht darum das wenn ich in meiner Schaltung ein Button drücke soll der Pi das mitprotokollieren.

    Das klappt Einwand frei aber ich würde gerne das Programm laufen lassen ohne das die Kommandozeile mitläuft bzw das wenn der Knopf gedrückt wird mir in dem Fenster angezeigt wird!


    Hat irgendwer eine Idee bzw kann mir helfen.

    Den Quellcode hab ich euch mal angehängt.


    Ich wäre euch unglaublich dankbar, bin schon am selbstzweifeln


    Danke im Voraus
















  • Hallo,


    wo ist denn dein konkretes Problem? De Einstiegspunkt? Tkinter importierst du ja schon mal - musst du jetzt nur noch nutzen :-)


    Ein gutes Basis-Beispiel ist ja in der Python-Doku zu finden: https://docs.python.org/3.5/li…imple-hello-world-program


    Wobei die Integration eines Callback in eine GUI nicht ganz trivial ist. Geht aber. Am besten: anfangen, zu Programmieren und bei Problemen hier den Code mit Problembeschreibung posten.


    Zum aktuellen Code:

    Warum from datetime import datetime as DateTime, also die Umbenennung in DateTime? Das ist IMHO ziemlich sinnfrei ubd bringt nichts.

    Vergiß einfach, das es `global` gibt. Sauber strukturierter Code braucht das nicht. Abgesehen davon, dass du es im aktuellen Code so wie so nicht nutzt.

    Wozu ist `count` gut? Das zählst du stumpf jede Sekunde hoch, verwendest es sonst aber nicht.
    Python hat das logging-Modul an Bord. Macht das gleich, was du aktuell händisch machst, nur eleganter und flexibler :-)


    Gruß, noisefloor

  • Hallo Zusammen,

    ich möchte mit dem Do () Funktion einen fallenden Pegel mitprotokollieren. Dieser soll mir aus benutzerfreundlichkeit in einem Fenster mitangezeigt werden. Das Fenster soll aus dem Framerahmen , einem Label und einem Quit button bestehen. Der taster in meiner Schaltung soll im Label die aktualisierung hervorrufen!

    Mit tkinter bekomme ich das Fenster so hin das er mir das Fenster aufruft und wenn ich dem label die timestr Funktion anhänge klappt es auch, aber auch nur für einmal wenn ich das Programm aufrufe ohne betätigung des tasters.


    Über die kommandozeile funktioniert es, das mit dem datetime ist durch hin und her kopieren und ausprobieren passiert, danke für den hinweis. Hast du ein bsp für den logging befehl Logging.


    danke für die bisherigen ratschläge


    Dowwnunder

  • Hey,

    diese Funktion bekomme ich nicht visualisiert das mir in einem Label der print ausdruck angezeigt wird.

    Der auslöser für die Funktion ist ein Hardwaretaster in einer Schaltung. Der Ausdruck soll dann bei jedem Drücken im Label überschrieben werden und die letzte Zeit angezeigt werden.




    Code
    1. def do(channel):
    2. global current_time
    3. current_time = generate_timestr()
    4. with open("Abschluss.txt", "a") as output:
    5. output.write("PTT pressed: {}\n".format(current_time))
    6. print ("PTT pressed: " +current_time)
  • Immerhin, jetzt ist es verständlich. Da du den Code für dein Label nicht gezeigt hast, kann ich nur mit diesem Link helfen: https://stackoverflow.com/a/17126015/5952681


    Dort steht erklärt, wie man den Text des tkinter Labels ändern kann. Das einfach anstelle des print verwenden.

  • In Beitrag#1 zeigst du keinerlei Tkinter Code, aber vermutlich hast du das nur raus gelöscht? Schlecht, so können wir dir nicht effektiv helfen.


    Grundsätzlich solltest du erst mal verstehen wie ein Tkinter Script überhaupt funktioniert bzw welche Auswirkungen es auf das Script hat.


    Dein Script hat 3 Probleme:

    1. die "while" blockiert das Script.

    2. Du behandelst zu viel in der Callback wodurch Flankenwechsel verpasst werden könnten.

    3. in deiner Callback ist "global" überflüssig


    Mit tkinter hat das Script bereits einen loop bzw eine while, nämlich durch mainloop. Eine weitere while geht also nicht, da nur eine Operation zur selben Zeit behandelt werden kann, deine Priorität aber hat und sollte haben die GUI. Das ist aber nicht weiter schlimm.


    ...da ich mich nicht ständig wiederholen möchte, ließ dir mal bitte folgende Beiträge/Threads durch:

    Schleife beenden/abbrechen

    Programm bleibt beim Durchlauf stehen


    Bezüglich des Flankenwechsels solltest du das lieber wie folgt umsetzen:

    Zeitmessung Heizung (Python)

    Reboot / Shutdown PI & Reboot Windows Rechner

    https://github.com/meigrafd/Sa…r/interrupt_stoppuhr_2.py

    https://github.com/meigrafd/Sa…ter/_Tkinter/LED_blink.py

    https://github.com/meigrafd/Sa…_Tkinter/Tkinter_Count.py


    Versuch das mal und wenn dann noch Fragen/Probleme sind zeig bitte den vollständigen Code.

  • Hallo,


    Downunder35ffm : es gilt wie immer: zeig' deinen Code, egal wie falsch der ist. Dann kann man effektiv helfen.


    Wenn du erwartest, dass dir hier jemand fertigen Code liefert - so funktioniert das nicht. Hier ist ja kein "Wünsch-dir-was Programmierforum".


    Gruß, noisefloor