Button führt Funktion aus bevor er gedrückt wurde

Fragen zu Tkinter.
Antworten
nicolasroth01
User
Beiträge: 5
Registriert: Samstag 20. Januar 2018, 23:51

Hi, ich möchte, dass der Button die Funktion erst ausführt, sobald er gedrückt wird. Das Problem scheinen mir die Klammern hinter dem Funktionsaufruf zu sein, da, wenn ich diese entferne, die Funktion nicht sofort aufgerufen wird, sondern erst beim Klicken. Mit den Klammern klappt das nicht und die Funktion wird mit dem Ausführen des Programms aufgerufen.

Code: Alles auswählen

from Tkinter import *

root = Tk()

def wechsleFarbe():
    b1["bg"] = "#FFFF00"
    return

b1 = Button(root, text = "Knopf", command = wechsleFarbe())

b1.pack()

root.mainloop()
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du rufst die Funktion ja auch gleich auf, statt sie nur zu uebergeben als Argument an command. Nimm mal die Klammern weg bei "command=.."
nicolasroth01
User
Beiträge: 5
Registriert: Samstag 20. Januar 2018, 23:51

__deets__ hat geschrieben:Du rufst die Funktion ja auch gleich auf, statt sie nur zu uebergeben als Argument an command. Nimm mal die Klammern weg bei "command=.."
achso, danke... aber wie muss ich es dann machen, wenn ich eine Funktion aufrufen will, die einen Parameter braucht?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Den musst du an die Funktion "anbinden", zB mit functools.partial.

Das, und diverse andere Dinge, wird hier im Forum uebrigens *permanent* besprochen. Ein bisschen durcharbeiten der tkinter Posts, und du lernst diese und andere Tricks, wie zB Dinge regelmaessig machen, warum blockierende Schleifen nicht funktionieren, etc...
nicolasroth01
User
Beiträge: 5
Registriert: Samstag 20. Januar 2018, 23:51

__deets__ hat geschrieben:Den musst du an die Funktion "anbinden", zB mit functools.partial.

Das, und diverse andere Dinge, wird hier im Forum uebrigens *permanent* besprochen. Ein bisschen durcharbeiten der tkinter Posts, und du lernst diese und andere Tricks, wie zB Dinge regelmaessig machen, warum blockierende Schleifen nicht funktionieren, etc...
alles klar, danke dir!
Antworten