Python tkinter eingabefeld.bind geht nicht?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Der Callback, der an bind übergeben wird, bekommt bei Aufruf ein Argument (das Event-Objekt) überreicht. Das würde bildlicher dargestellt so aussehen:

q(someEventObject)

Nun hat deine Anwendung aber keine Funktion q, die einen Parameter definiert.

Eine einfache Lösung wäre es also, deiner Funktion noch einen Parameter zu spendieren.

def q(evt):
  # your code ...
manfred840 
Fragesteller
 23.08.2021, 17:05

Ich habe es nicht ganz verstanden es klappt leider immer noch nicht.

Mein code:

from tkinter import *
def q(evt):
    test.delete(0, END)

windows = Tk()
test = Entry(
    font=('Comic Sans MS', 10)
)

button = Button(
    text='d',
    command=q
)
button.pack()
test.pack()
test.bind('M', q)
windows.geometry('420x420')
windows.title('tkinter lernen')
icon = PhotoImage(file='Bilder\logo.png')
windows.iconphoto(True, icon)
windows.config(background='#1AEFE0')

windows.mainloop() #erstellt das fenster

Aber wenn ich in test.bind('da', q), dann wird das d gelöscht das a aber nicht(geht auch mit anderen Buchstaben muss, aber zwei Buchstaben sein)

0
manfred840 
Fragesteller
 23.08.2021, 17:18
@manfred840

Es klappt doch nur anderes als ich dachte.

Wenn ich im Eingabefeld ein M eingebe, löscht es alles außer das M und gewollt war das es alles mit sich löscht.

0
regex9  23.08.2021, 20:41
@manfred840

Wenn du die Ereigniskette nach deinem Handler unterbrichst, passiert das nicht mehr. Dafür musst du deinen Handler lediglich den String break zurückgeben lassen.

def q(evt):
  test.delete(0, END)
  return "break"
1