Verstehe den Code nicht
Verfasst: Samstag 10. April 2021, 15:41
Guten Tag,
ich habe gerade ein Codebeispiel gefunden das ich nicht verstehe, evtl. kann mir das jemand erläutern und Licht in die Dunkelheit bringen.
Es geht um folgenden Post bei stack overflow https://stackoverflow.com/questions/624 ... er-but-got
Der Code ist folgender:
Der Code ermöglicht nur die Eingabe von den Zeichen 0-9.
Ich verstehe mehrere Zeilen in der Methode Callback nicht.
Es geht los mit:
- Laut Python Doku übernimmt die Methode isdigit keine Argumente, warum wird hier die Variable Text übergeben ? Müsste es nicht "text.isdigit()" sein ?
- Laut Python Doku gibt isidigit boolean zurück, warum wird dieser Wert dann in einen String umgewandelt ?
- Warum funktioniert diese If-Abfrage, wird dort nicht ein boolen mit einem String (text) verglichen ?
- Diese Zeile verstehe ich auch nicht. Ist das eine Variablenzuweisung mit eingebauter If-Abfrage ? Wenn ja warum, die Variable text, kann ja innerhalb der Zeile nicht geändert werden.
Variable text ist gleich variable text wenn variable text sonst 0 ?
Über ein wenig Aufklärung würde ich mich freuen
Gruß Kai
ich habe gerade ein Codebeispiel gefunden das ich nicht verstehe, evtl. kann mir das jemand erläutern und Licht in die Dunkelheit bringen.
Es geht um folgenden Post bei stack overflow https://stackoverflow.com/questions/624 ... er-but-got
Der Code ist folgender:
Code: Alles auswählen
from tkinter import *
def callback(text, wid):
if str.isdigit(text) or not text:
text = text if text else 0
if wid == str(entry3):
n = entry2.get() if entry2.get() else 0
if wid == str(entry2):
n = entry3.get() if entry3.get() else 0
ent1.set(int(n) + int(text))
return True
return False
root = Tk()
ent1 = IntVar()
vcmd = (root.register(callback), '%P', '%W')
frame = Frame(root)
frame.pack()
entry1 = Entry(frame, width=5, textvariable=ent1)
entry2 = Entry(frame, width=5, validate='all', validatecommand=vcmd)
entry3 = Entry(frame, width=5, validate='all', validatecommand=vcmd)
entry1.pack(side=LEFT)
entry2.pack(side=LEFT)
entry3.pack(side=LEFT)
root.mainloop()
Ich verstehe mehrere Zeilen in der Methode Callback nicht.
Es geht los mit:
Code: Alles auswählen
if str.isdigit(text) or not text:
- Laut Python Doku gibt isidigit boolean zurück, warum wird dieser Wert dann in einen String umgewandelt ?
- Warum funktioniert diese If-Abfrage, wird dort nicht ein boolen mit einem String (text) verglichen ?
Code: Alles auswählen
text = text if text else 0
Variable text ist gleich variable text wenn variable text sonst 0 ?
Über ein wenig Aufklärung würde ich mich freuen

Gruß Kai