beim nun zweiten Beitrag möchte ich doch kurz ohne förmliche Vorstell-Mail was zu mir sagen.
Einige Jahre programmiere ich schon (wenn ich "Turbo Pascal 3.0" sage, ahnen einige bestimmt, wie lange ) auch und hauptsächlich beruflich.
Daher kann ich Handbücher lesen und umsetzen und weiß auch bei OOP, was ich tue.
C++, VB/VBA, C#, SQL sind durchaus täglich Brot.
Python mit allem Zubehör ist mir aber komplett neu. Auslöser war Verarbeitung großer Datenmengen und Lineare Optimierung, wozu ich in VBA keine Lust hatte .
Einiges kann man/ich also ableiten, aber dann kommt sowas:
Code: Alles auswählen
[code]
def forget(widget):
widget.forget()
def retrieve(widget):
widget.pack()
b1 = Button(root, text = "Btn 1")
b1.pack()
b2 = Button(root, text = "Btn 2", command = lambda : forget(b1))
b2.pack()
b3 = Button(root, text = "Btn 3", command = lambda : retrieve(b1))
b3.pack()#fill = BOTH, expand = True)
Was "lambda" soll und macht, meinte ich verstanden zu haben, aber das ließ mich stutzen...
Warum funktioniert das Ganze nicht ohne lambda??? Dazu finde ich keine Erklärung, habe es aber gerade am eigenen Leibe erlebt.
__init__ erstellt ein Textfeld und einen Button. In das Textfeld soll der Text, nach dem durch drücken von Button gesucht wird.
Logischerweise hat der Button eine Funktion zugewiesen bekommen.
Code: Alles auswählen
[code]
( __init__ )
self.enttxtSearch = CWidLblEntry(lblfrmtbl_b_search, "Filter / Suchen :",'', 12, 50)
self.enttxtSearch.pack(side=tk.LEFT, padx=5)
btnSearch = tk.Button(lblfrmtbl_b_search, text="Anwenden!", command=lambda: self.cmdbtnSearch(displtblname))
btnSearch.pack(side=tk.LEFT, padx=6)
def cmdbtnSearch(self,displtblname):
ltxtSearch=self.enttxtSearch.get()
print("s " ,ltxtSearch)
CWidLblEntry ist ein eigenes Widget, das Label und Entry kombiniert.
Das "self" bei enttxtSearch gibt es, weil sonst das .get() nicht funktioniert.
Mein Vorgehen hier ist sicher nicht der Weisheit letzter Schluss - ich hasse globale Variablen, auch wenn "global" sich hier nur auf innerhalb der Klasse bezieht.
Auch hier bin ich für Gegenvorschläge dankbar.
Die Hauptfrage aber wieder in den Mittelpunkt gestellt:
Ohne "lambda" im "command =" denkt das Programm nicht daran, mir für ltxtsearch etwas auszugeben - mit funktioniert es.
Da ich kein Fan der vier Buchstaben "isso" bin, interessiert mich hier die Erklärung; gerne mit Quelle - ich habe nichts gefunden.
Grüße und schönen Sonntach!
Dirk