Ich habe ein kleines Tool, welches zwei Text Felder hat.
Im ersten Feld soll der eingegebene Text in eine .txt-Datei gespeichert werden.
Im zweiten Feld, wird per Button der Text in das Eingabefeld aus einer Datei geladen.
Bisher funktioniert leider aber nur die Variante wo der Text aus einer Datei gelesen wird und im Eingabefeld landet
Den Text in eine Datei zu speichern bekomme ich irgendwie nicht hin. Ich habe auch schon viele, viele Stunden gegoogelt und in Bücher geschaut...ohne Erfolg.
Hier mein Code:
Code: Alles auswählen
import PySimpleGUI as sg
# this one long import has the effect of making the code more compact as there is no 'sg.' prefix required for Elements
from PySimpleGUI import InputCombo, Combo, Multiline, ML, MLine, Checkbox, CB, Check, Button, B, Btn, ButtonMenu, Canvas, Column, Col, Combo, Frame, Graph, Image, InputText, Input, In, Listbox, LBox, Menu, Multiline, ML, MLine, OptionMenu, Output, Pane, ProgressBar, Radio, Slider, Spin, StatusBar, Tab, TabGroup, Table, Text, Txt, T, Tree, TreeData, VerticalSeparator, Window, Sizer
import os
from pathlib import Path
col1 = Column([[Frame('Input Text to .txt-File:', [[Column([[Multiline( key='SAVE', size=(15,20)),]],size=(150,400))]])]], pad=(0,0))
col2 = Column([[Frame('Load .txt-File Content:', [[Column([[Multiline( key='LOAD', size=(15,20)),]],size=(150,400))]])]], pad=(0,0))
layout = [
[col1, col2],
[sg.Button("SAVE DRAFT"),sg.Button("LOAD DRAFT"), sg.Exit()],
]
window = sg.Window("Input output Tool", layout, element_justification="right")
def save_draft ():
window['SAVE'].read()
txt1 = Path('txt1.txt').write_text()
txt1 = txt1.replace('\n', '')
def load_draft ():
txt1 = Path('txt1.txt').read_text()
txt1 = txt1.replace('\n', '')
window['LOAD'].update(txt1)
def main ():
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == "Exit":
break
if event == "SAVE DRAFT":
save_draft ()
elif event == "LOAD DRAFT":
load_draft ()
window.close()
if __name__ == "__main__":
main()
Wenn ich auf "SAVE DRAFT" klicke, erscheint folgende Fehlermeldung:
AttributeError: 'Multiline' object has no attribute 'read'
Alternativ habe ich folgende Varianten für die Funktion "save_draft" ausprobiert, mit anderen folgenden Fehlern:
2. Variante
Code: Alles auswählen
filename = "txt1.txt"
window['MONTAG'].read_text
with open(filename, 'w') as f:
text = f.write()
f.write(filename)
window['MONTAG'].read_text
AttributeError: 'ErrorElement' object has no attribute 'read_text'
3. Variante
Code: Alles auswählen
window['MONTAG'].read()
with open("txt1.txt",'w') as f:
#f.write("my first file\n")
f.write.update(f)
f.close()
window['MONTAG'].read()
AttributeError: 'ErrorElement' object has no attribute 'read'
4. Variante
Code: Alles auswählen
input_text = values['MONTAG']
text_file = open("txt1.txt", "w")
text_file.write(input_text)
text_file.close()
input_text = values['MONTAG']
NameError: name 'values' is not defined
5. Variante
Code: Alles auswählen
MONTAG = key='MONTAG'
txt1 = Path('txt1.txt').write_text(MONTAG)
txt1 = txt1.write('\n', '')
window['MONTAG'].update(txt1)
file1.close()
txt1 = txt1.write('\n', '')
AttributeError: 'int' object has no attribute 'write'
6. Variante
Code: Alles auswählen
MONTAG = input()
text_file = open("txt1.txt", "w")
text_file.write(MONTAG)
text_file.close()
Hier stürzt das Programm ab, aber speichert den Wert "MONTAG" in die Datei.
Was aber nichts mit dem Eingabefeld zu tun hat. Hilft also auch nicht....
Ich würde mich sehr über eure Hilfe freuen! Wo liegt der Fehler, wie muss der Code aussehen?
Liebe Grüße,
Marlon