2016-09-10 5 views
-1

Ich arbeite an einer tkinter ttk-Schnittstelle, um einige relativ komplexe Berichte zu automatisieren/zu erleichtern.tkk Übergabe von Parametern an Rückrufe

Ich habe eine Funktion, die einen komplexen Datenscan über ein Verzeichnis durchführt. Um die Funktion auszuführen, klicken Sie auf eine Schaltfläche Widget in der Symbolleiste:

fileMenu.add_command(label="Generate Report",command=ScanActiveProjects) 

Allerdings würde Ich mag den Code in dieser Funktion wiederverwendet wird durch einen zusätzlichen Parameter hinzufügen (einfache = True/False), so dass ich eine teilweise abbildet und eine vollständige Ausführung der Funktion für einzelne Schaltflächen.

Ich dachte, dass ich dies wie dies recht einfach tun könnte:

fileMenu.add_command(label="Generate Management Report",command=ScanActiveProjects(simple=True) 
fileMenu.add_command(label="Generate Detailed Report",command=ScanActiveProjects(simple=False) 

Das Ergebnis davon ist, dass die Taste automatisch beim Anfahren des Programms gedrückt wird - was ich nicht verstehe. Also meine Fragen sind:

1) Warum wird die Schaltfläche automatisch gedrückt, wenn die Parameter (einfach = True)/(einfach = falsch) hinzugefügt werden?

2) Wie kann ich eine Callback-Funktion an eine Schaltfläche binden, aber über die Schaltfläche einen bestimmten Konstruktorparameter angeben?

Antwort

1
  1. Die Taste wird automatisch gedrückt, da Sie einen Funktionsanruf an in der add_command ausführen.
  2. Sie können functools.partial verwenden, um zu tun, was Sie wollen.
+0

Die einfachste Lösung war zu ändern: command = ScanActiveProjects (True) zu: command = lambda: ScanActiveProjects (False) – user3535074

Verwandte Themen