.get() geht nicht

Fragen zu Tkinter.
Antworten
Eisi
User
Beiträge: 62
Registriert: Sonntag 24. November 2013, 21:59

Halli hallo zusammen,

ich bin noch fleißig am üben und komme leider bei einer sache gerade nicht weiter. Der Code ist bestimmt noch einfacher zu schreiben aber ich bin im moment froh das es soweit ganz gut läuft ^^

Das Programm soll im Moment, wenn eine Zahl eingegeben wird, mit dem Namen eine Datei erstellen welche Datum und Uhrzeit der Erstellung speichert. Das Funktioniert auch einwandfrei.
Es soll aber auch bei Erfolgreichem erstellen in einem Label einen Text ausgeben worin auch nochmal die Nummer angezeigt werden soll, da der Inhalt des Entryblock sofort wieder gelöscht wird.

Code: Alles auswählen

from tkinter import *
import os
import time

w = Tk()

w.geometry('400x300')

def ergebnis(event):
    te = ('/home/christoph/Loetpaste/akte/' + entry1.get() + '.txt')
    res = os.path.isfile(te)
    if res == True:
        #print2 = Label(w, text='Behälter schon vorhanden! Bitte Nummer überprüfen!')
        #print2.pack()
        label1.configure(text='Behälter schon vorhanden! Bitte Nummer überprüfen!')
    else:
        e = open('/home/christoph/Loetpaste/akte/' + entry1.get() + '.txt', 'w')
        datum = time.strftime('%d.%m.%y\n%H:%M:%S')
        s = (str(datum))
        e.write(s)
        #print1 = Label(w, text='Behälter erfolgreich gescannt!\nNummer: ' + entry1.get())
        #print1.pack()
        entry1.delete('0',END)
        label1.configure(text = 'Behälter erfolgreich gescannt!\nNummer: ' + str(entry1.get()))
        
        

entry1 = Entry(w, font=('Arial', 20))
entry1.bind('<Return>', ergebnis)
entry1.pack()

label1 = Label(w)
label1.pack()

w.mainloop()
das .get() nach Nummer: geht leider nicht

Ich hoffe ich habs verständlich erklärt und hoffe auf Hilfe :)
BlackJack

@Eisi: In der Zeile davor löscht Du den Inhalt vom `Entry` und wunderst Dich jetzt das er nach dem Löschen auch tatsächlich nicht mehr da ist‽ ;-)
Eisi
User
Beiträge: 62
Registriert: Sonntag 24. November 2013, 21:59

omg bin ich hohl :roll:

Ich danke dir ^^
Sirius3
User
Beiträge: 18294
Registriert: Sonntag 21. Oktober 2012, 17:20

noch ein paar Anmerkungen zum Code:
- bei te = ... sind die Klammern überflüssig, te ist ein schlechter Variablenname, weil er nichts aussagt und Strings solltest Du mit String-Formatierungen erstellen und nicht per + zusammenstückeln. Zum Verbinden von Pfaden gibt es os.path.join.
- die Variable res ist unnötig, da Du sie nur zum Vergleich in der nächsten Zeile brauchst und da das isfile auch direkt hinschreiben könntest. Auf True zu prüfen ist unüblich. Ein einfaches "if res:" bzw. "if os.path.isfile(te):" reicht.
- die Variable "e" ist nichtssagend, open solltest Du in einen with-Block einbinden, dann wird die Datei auch automatisch geschlossen, den Dateinamen hast Du schon an "te" gebunden, also kannst Du auch diese Variable benutzen und mußt nicht nochmals den selben Dateinamen neu erstellen.
- die Variable "s" ist nichtssagend und überflüssig, weil Du die Zuweisung direkt als Parameter übergeben könntest, die Klammern sind überflüssig, "str(datum)" ist überflüssig, da "datum" schon ein String ist.
janb14
User
Beiträge: 16
Registriert: Sonntag 5. Januar 2014, 16:53

Hey ich habe genau so eine Frage zum Thema .get(), soll ich dafür ein eigenes Thema erstellen, oder darf ich meinen Code + Frage hier drunter posten?
Mfg Jan
BlackJack

@janb14: Wenn's nicht das gleiche oder ein *sehr* ähnliches Problem ist, dann besser ein neues Thema aufmachen. Und dieses Problem kann es ja nicht wirklich sein, denn das wurde ja gelöst. :-)
janb14
User
Beiträge: 16
Registriert: Sonntag 5. Januar 2014, 16:53

Ok danke für die schnelle Antwort, dann werde ich wahrscheinlich ein eigenes Thema aufmachen
MfG Jan
Antworten