2 command Befehle mit einem Button verbinden - lambda

Fragen zu Tkinter.
Benutzeravatar
__blackjack__
User
Beiträge: 14085
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@wulf3000: Braucht man denn das Startfenster wirklich nie wieder? Was ist wenn der Test abgearbeitet wurde? Ist das Programm dann zu ende und muss neu gestartet werden, oder soll das Programm dann weiterlaufen und wieder das Startfenster zeigen? Denn dann will man das Fenster ja gar nicht schliessen, sondern einfach nur eine Weile nicht anzeigen.

@__deets__: Begründungen für so etwas könnte sein, dass man wenn da gerade kein Test gemacht wird, möglichst viel vom Desktophintergrund sieht (Firmenlogo zum Beispiel) und/oder das man auch von etwas Entfernung deutlich sehen kann, ob da gerade ein Test abgearbeitet wird oder die Arbeitsstation ”idle” ist.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

@__blackjack__ man kann sich alles mögliche einfallen lassen. In einer Phase, in der noch nicht mal die Grundlagen stehen, Zeit mit solchem schnickschnack zu verplempern, ist trotzdem schlechte Projektsteuerung.
wulf3000
User
Beiträge: 20
Registriert: Montag 31. August 2020, 10:46

@__blackjack__ Nein, das Startfenster wird nicht mehr benötigt. Wenn das Programm zu Ende ist, wird alles im zweiten Fenster angezeigt. Sprich Ergebnisse des Tests werden im Fenster geloggt.
Aber du hast recht optimalerweise wird das Startfenster nach Testbeginn ausgeblendet bis der Test vorüber ist.
wulf3000
User
Beiträge: 20
Registriert: Montag 31. August 2020, 10:46

@__deets__: Sorry aber das ist einfach Unsinn was du schreibst. Natürlich kann man auch nur ein einziges Testfenster programmieren. Aber das hat doch nichts mit meiner Frage zutun. Ich verstehe nicht warum man in einem Forum irgendeine Projektidee hinterfragt, obwohl das mit meinem Thread überhaupt nichts zutun hat.

Zeit wird auch nicht verplempert. Es ist einfach eine Vorgabe meines Vorgesetzten und ganz nebenbei einfach optisch ansprechender, wenn man mehrere Fenster für verschiedenste Eingaben hat.

Wenn du nichts zum Lösen des Problems beitragen willst, dann verlasse den Thread doch einfach
Benutzeravatar
DeaD_EyE
User
Beiträge: 1253
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

sparrow hat geschrieben: Dienstag 1. September 2020, 20:33
DeaD_EyE hat geschrieben: Dienstag 1. September 2020, 15:58Konnte ich in der PEP8 leider nicht finden. Ich habe bezüglich dessen schon unterschiedliche Meinungen gelesen.
Wenn man danach sucht, ist es kaum zu übersehen.
Jetzt hab ich es auch gefunden.

Konstanten groß und mit Unterstrich.
Globale Variablen wie Namen von Funktionen, also Kleinbuchstaben mit Unterstrichen getrennt.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

@wulf3000 hier tauchen jeden Tag Leute auf, die sich selbst davon überzeugt haben, das sie jetzt unbedingt mit dem Kopf durch eine Wand müssen. Ihnen aufzuzeigen, das es ggf. auch andere Lösungen für ihr Problem gibt, indem man die gewählten Entscheidungen in Frage stellt, ist durchaus ein hilfreicher Beitrag. Das du das so nicht sehen magst, oder dich nicht bemüßigt siehst, Anweisungen von oben zu hinterfragen, ist nicht mein Problem.

Es haben sich über die Jahre bestimmte Muster in der Art, wie wir mit grafischen Oberflächen arbeiten, entwickelt. Zb ein Fenster mit der Darstellung eines Versuchs, und dann ein modaler Dialog, der die zugrunde liegende Parameter abfragt. Und der sich dann schließt, wenn der Versuch läuft. Und das sind sowohl von den Usern erkannte, als auch von den Frameworks unterstützte Abläufe. Siehe zB https://effbot.org/tkinterbook/tkinter- ... indows.htm

Das durch selbst ausgedachte, überraschende Verhaltensweisen zu ersetzen, ist eben keine so gute Idee.

Aber ich werde dich & deine Fragen in Zukunft wunschgemäß links legen lassen.
wulf3000
User
Beiträge: 20
Registriert: Montag 31. August 2020, 10:46

@__deets__: Ändert leider trotzdem nichts daran, dass es überhaupt nichts mit der eingehenden Frage zutun hat. Und die war ebend, ob 2 command Befehle in einem Buttonmöglich sind. Nicht mehr und nicht weniger.
Ob man sich bei der Masterarbeit in einem völlig neuen Unternehmen lieber mit dem Chef über ein Fenster streitet oder ob man versucht die Vorgaben zu erfüllen ist dann eine andere Frage. Ich finde es optisch mit einem eingehenden Fenster schöner und hab es versucht so umzusetzen. Als ich nicht weiterkam, dachte ich ich frage mal in diesem Forum.

Der Link hilft mir tatsächlich weiter...
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo wulf3000,
ob 2 command Befehle in einem Buttonmöglich sind
wenn Du nicht weiter gekommen bist, hier zwei Minimalbeispiele, wie schon von dem "hellen Stern" erwähnt,
mit der Partialfunktion.
Das erste Beispiel löscht den Rahmen, inklusiv Taste, das zweite nur die Taste.

Code: Alles auswählen

import tkinter as tk
from functools import partial

def main():
    root = tk.Tk()
    root.title("Prüfplatz Laetus")
    rahmen = tk.Frame(width="250", height="50", bd=3)
    rahmen.pack()
    taste_start = tk.Button(rahmen, text="Prüfprogramm\n starten",
                            command=partial(loesche_rahmen, rahmen),
                            font="Arial 15", bd=3, width=15, height=2)
    taste_start.grid(row=0, column=0)

    root.mainloop()

def loesche_rahmen(rahmen):
    rahmen.destroy()
    erstelle_auswahlfenster()
    
def erstelle_auswahlfenster():    
    pass

if __name__ == "__main__":
    main()

Code: Alles auswählen

import tkinter as tk
from functools import partial

def main():
    root = tk.Tk()
    root.title("Prüfplatz Laetus")
    rahmen = tk.Frame(bd=3) 
    rahmen.pack()
    taste_start = tk.Button(rahmen, text="Prüfprogramm\n starten",                            
                            font="Arial 15", bd=3, width=25, height=2)
    taste_start.grid(row=0, column=0)    
    taste_start.config(command=partial(loesche_taste, taste_start, rahmen))

    root.mainloop()

def loesche_taste(taste_start, rahmen):
    taste_start.destroy()
    erstelle_auswahlfenster(rahmen)
    
def erstelle_auswahlfenster(rahmen):
    testauswahl= tk.IntVar()
    smartspect = tk.Radiobutton(rahmen, text="smartspect", variable=testauswahl,
                                value=1, command=test_starten)
    icam = tk.Radiobutton(rahmen, text="iCam", variable=testauswahl,value=2,
                          command=test_starten)

    smartspect.grid(row=1, column=0, sticky="w")
    icam.grid(row=2, column=0, sticky="w")

    taste_test_start = tk.Button(rahmen, text="Test starten",
                                 command=test_starten, bd=3, width=25)    
    taste_test_start.grid(row=3, column=0)    

def test_starten():
    pass

if __name__ == "__main__":
    main()
Gruss
Peter
wulf3000
User
Beiträge: 20
Registriert: Montag 31. August 2020, 10:46

Danke, das hilft mir weiter!
Antworten