python 2.7 Tkinter
Verfasst: Montag 25. Juni 2018, 09:00
Guten Tag, nach langer Zeit beschäftige ich (77J) mich wieder mit der Programmierung eines Log-Programms für den Amateurfunk.
Das Programm läuft in python rund. Jetzt will ich es mit Tkinter grafisch darstellen.
Dabei stosse ich auf zwei Fehler und bitte um Hilfe.
Bei diesem Testabschnitt soll aus zwei Feldern Text gelesen werden:
def show_entry_fields():
print("excall: %s\nOP name: %s" % (e1.get(), e2.get()))
e1.delete(0,END)
e2.delete(0,END)
master = Tk()
Label(master, text="excall").grid(row=0)
Label(master, text="op-name").grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.insert(10,"xxx")
e2.insert(10,"yyy")
Das Fenster ist ok!
Fehler 1 ?? __len__??
# Unterprogramm prüft auf keine Text-Eingabe
Nicht durch (zahl) verwirren lassen
def kein(zahl):
if len(zahl) == 0:
zahl = 'n'
print ("****zahl= " ,zahl)
return (zahl)
Fehlermeldung
if len(zahl) == 0:
AttributeError: Entry instance has no attribute '__len__'
# Unterprogramm prüft auf keine Eingabelänge - jetzt unwirksam gemacht
def kein(zahl):
#if len(zahl) == 0:
# zahl = 'n'
print ("****zahl= " ,zahl)
return (zahl)
# ende unterprogramm
Fehler 2 ??
warum gibt print den richtigen wert aber via (kein)/zahl kommt
<Tkinter.Entry instance at 0xb70aae0c>)
myexcall = kein(e1)
print ("myexcall = ", myexcall)
sparks = kein(e2)
print ("sparks = ",sparks)
#sparks = raw_input("sparks: ") # das war vorher die abfrage in python
AUSGABE auf der Console durch print ok.
excall: dh4pb
OP name: sylvester
('****zahl= ', <Tkinter.Entry instance at 0xb70aae0c>)
('myexcall = ', <Tkinter.Entry instance at 0xb70aae0c>)
('****zahl= ', <Tkinter.Entry instance at 0xb70b0dec>)
('sparks = ', <Tkinter.Entry instance at 0xb70b0dec>)
print(myexcall +" ", sparks+" ", qzeit+" ", datum+" ", qssm+" ", call+" ", qra)
TypeError: unsupported operand type(s) for +: 'instance' and 'str'
QRX?
Das Programm läuft in python rund. Jetzt will ich es mit Tkinter grafisch darstellen.
Dabei stosse ich auf zwei Fehler und bitte um Hilfe.
Bei diesem Testabschnitt soll aus zwei Feldern Text gelesen werden:
def show_entry_fields():
print("excall: %s\nOP name: %s" % (e1.get(), e2.get()))
e1.delete(0,END)
e2.delete(0,END)
master = Tk()
Label(master, text="excall").grid(row=0)
Label(master, text="op-name").grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.insert(10,"xxx")
e2.insert(10,"yyy")
Das Fenster ist ok!
Fehler 1 ?? __len__??
# Unterprogramm prüft auf keine Text-Eingabe
Nicht durch (zahl) verwirren lassen
def kein(zahl):
if len(zahl) == 0:
zahl = 'n'
print ("****zahl= " ,zahl)
return (zahl)
Fehlermeldung
if len(zahl) == 0:
AttributeError: Entry instance has no attribute '__len__'
# Unterprogramm prüft auf keine Eingabelänge - jetzt unwirksam gemacht
def kein(zahl):
#if len(zahl) == 0:
# zahl = 'n'
print ("****zahl= " ,zahl)
return (zahl)
# ende unterprogramm
Fehler 2 ??
warum gibt print den richtigen wert aber via (kein)/zahl kommt
<Tkinter.Entry instance at 0xb70aae0c>)
myexcall = kein(e1)
print ("myexcall = ", myexcall)
sparks = kein(e2)
print ("sparks = ",sparks)
#sparks = raw_input("sparks: ") # das war vorher die abfrage in python
AUSGABE auf der Console durch print ok.
excall: dh4pb
OP name: sylvester
('****zahl= ', <Tkinter.Entry instance at 0xb70aae0c>)
('myexcall = ', <Tkinter.Entry instance at 0xb70aae0c>)
('****zahl= ', <Tkinter.Entry instance at 0xb70b0dec>)
('sparks = ', <Tkinter.Entry instance at 0xb70b0dec>)
print(myexcall +" ", sparks+" ", qzeit+" ", datum+" ", qssm+" ", call+" ", qra)
TypeError: unsupported operand type(s) for +: 'instance' and 'str'
QRX?