im folgenden Code, kann der Benutzer eine Zahl N eingeben. Das Programm erzeugt dann automatisch (mithilfe von tkinter Variablen und Trace) N Zeilen.
Code: Alles auswählen
from tkinter import *
root = Tk()
Label(root, text = "Enter Number of columns").grid(row = 0, column = 0)
N = IntVar()
e_N = Entry(root, textvariable = N).grid(row = 0, column = 1)
# Put trace callbacks on the Entry IntVar
def create_rows(name, index, mode):
rows = N.get()
for i in range(rows):
Entry(root).grid(row = i + 1, column = 0)
N.trace('w', create_rows)
# Setting the vars will trigger the trace
N.set(2)
mainloop()
Code: Alles auswählen
Exception in Tkinter callback
Traceback (most recent call last):
File "/home/erich/anaconda3/lib/python3.7/tkinter/__init__.py", line 508, in get
return self._tk.getint(value)
_tkinter.TclError: expected integer but got ""
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/erich/anaconda3/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "<ipython-input-120-42d7236d23c8>", line 10, in create_rows
rows = N.get()
File "/home/erich/anaconda3/lib/python3.7/tkinter/__init__.py", line 510, in get
return int(self._tk.getdouble(value))
_tkinter.TclError: expected floating-point number but got ""
Der Wert von N wird verfolgt, d.h., dass bei jeder Änderung create_rows aufgerufen wird. Auch kurz nachdem die ursprüngliche Nummer gelöscht wird, aber bevor eine neue Nummer eingeben wird.
Ich möchte diesen Fehler abfangen, indem ich N.get() in einen try/except Block schreibe.
Leider weiß ich jedoch nicht, wie das umsetzen soll. Ich habe versucht N.get() durch
Code: Alles auswählen
try:
rows = N.get()
except _tkinter.TclError:
" "