Eingabe aus dem Textfeld in txt. Datei ablegen.

Fragen zu Tkinter.
Antworten
Merll
User
Beiträge: 3
Registriert: Donnerstag 29. Juni 2017, 21:05

Hi Leute,

ich versuche mich gerade daran eine Benutzeroberfläche zu erstellen mit deren Hilfe ein Festes Wort "Aufgabe" mit einer vom Benutzer eingegebenen Zahl in einer txt. Datein abgespeichert wird.
Mein Problem ist, dass ich es nicht schaffe die eingebene Zahl die nach betätigung des Buttons in der Konsole angezeigt wir in die txt. Datei zu übertragen... kann mir da vielleicht jemand helfen?

Danke schon mal!

Code: Alles auswählen

from tkinter import*
import os

fenster = Tk()      # Erzeugung des Fensters
fenster.title("Orgasoft Kamb")
fenster.geometry("400x400")

label1 = Label(text="Kamb Autrags- und Zeitorganisation")
label1.pack()


def ausgabe():
    daten = open("D:/Users/Marius/Desktop/Zeiterfassungsliste.txt","w")
    daten.write("Time and Date")           # Erzeugung eintrag in die Textdatei

    daten.close()

Schaltfläche1 = Button(fenster, text="Zeiterfassung",command = ausgabe)    # Erzeugung  Schaltfläche 1
Schaltfläche1.pack()

eingabe = Entry(fenster)      #Erzeugung Eingabefeld
eingabe.pack()

def lesen():                                                        #Erzeugung eingabe
    daten2 = open("D:/Users/Marius/Desktop/Auftragsregistration.txt","w")     
    daten2.write("Auftrag:")
    print (eingabe.get())

Schaltfläche2 = Button(fenster, text="Auftragsregistration",command = lesen)  # Erzeugung Schaltfläche 2 2
Schaltfläche2.pack()


mainloop()

Zuletzt geändert von Anonymous am Donnerstag 29. Juni 2017, 21:43, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@Merll: In dem Code steht ja auch nichts was das *machen* würde. Das ist aber sowieso alles nicht wirklich sinnvoll so. Arbeite am besten mal das Tutorial in der Python-Dokumentation durch, inklusive objektorientierte Programmierung, denn das braucht man für jede nichttriviale GUI.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Ich würde es auch mit write probieren, denn mit print geht es nicht. Außerdem solltest Du die Datei wieder schließen
Merll
User
Beiträge: 3
Registriert: Donnerstag 29. Juni 2017, 21:05

Ja ich hab es jetzt im gesamten noch mal bearbeitet damit es ordentlicher etc. ist. Das mit dem Write ist mir schon klar das Problem ist das ich nicht weis was da hinter kommt. Z.b. Bei

Code: Alles auswählen

 Print (Eingabe.get()) 
wie soll ich das denn in Write verpacken? Weil wie ein normales Wort Einschreiben mit

Code: Alles auswählen

 daten2.Write (".....") 
geht das ja nicht oder?
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Merll hat geschrieben:Ja ich hab es jetzt im gesamten noch mal bearbeitet damit es ordentlicher etc. ist. Das mit dem Write ist mir schon klar das Problem ist das ich nicht weis was da hinter kommt. Z.b. Bei

Code: Alles auswählen

 Print (Eingabe.get())
wie soll ich das denn in Write verpacken? Weil wie ein normales Wort Einschreiben mit

Code: Alles auswählen

 daten2.Write (".....")
geht das ja nicht oder?
Das geht nicht, den 'write' schreibt man klen.
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Ohne Klasse muss die Reihenfolge mehr beachtet werden und Du bekommst Variablen nicht einfach von einer Funktion in eine andere übernommen. Bei mehrzeiligen Eingaben, Textfeldern usw. get(1.0, END) verwenden, denke ich mir, bei einzeiligen sollte es weniger eine Rolle spielen. Das funktioniert zumindest bei mir:

Code: Alles auswählen

from tkinter import Tk, Label, Button, Entry
import os
 
fenster = Tk()
fenster.title("Orgasoft Kamb")
fenster.geometry("400x400")
  
label = Label(fenster, text="Kamb Autrags- und Zeitorganisation")
label.pack()

def notiere_zeitangaben():
    datei = open("zeiterfassungsliste.txt","w")
    if datei:
        datei.write("Time and Date")
        datei.close()
    
zeiterfassung = Button(fenster, text="Zeiterfassung",command = notiere_zeitangaben)
zeiterfassung.pack()

eingabe = Entry(fenster)
eingabe.pack()

def notiere_registration():
    erfolgte_eingabe = eingabe.get()

    if erfolgte_eingabe != "":
        datei = open("auftragsregistration.txt","w") 
        if datei:
            datei.write("Auftrag: {}".format(erfolgte_eingabe))
            datei.close()

registration = Button(fenster, text="Auftragsregistration",command = notiere_registration)
registration.pack()

fenster.mainloop()
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Melewo: was hast Du Dir bei den if-Abfragen in Zeile 13 und 28 gedacht? open liefert nie einen nicht-wahren Wert zurück. Dateien immer mit dem with-Statement öffnen.
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Gut, dann sollte es so besser sein.

Code: Alles auswählen

from tkinter import Tk, Label, Button, Entry

fenster = Tk()
fenster.title("Orgasoft Kamb")
fenster.geometry("400x400")

  
label = Label(fenster, text="Kamb Autrags- und Zeitorganisation")
label.pack()

def notiere_zeitangaben():
    with open("zeiterfassungsliste.txt","a") as datei:
        datei.write("Time and Date\n")
    
zeiterfassung = Button(fenster, text="Zeiterfassung",command = notiere_zeitangaben)
zeiterfassung.pack()

eingabe = Entry(fenster)
eingabe.pack()

def notiere_registration():
    erfolgte_eingabe = eingabe.get()

    if erfolgte_eingabe != "":
        with open("auftragsregistration.txt","a") as datei:
            datei.write("Auftrag: {}\n".format(erfolgte_eingabe))

registration = Button(fenster, text="Auftragsregistration",command = notiere_registration)
registration.pack()

fenster.mainloop()
Antworten