PySimpleGui сохранить многострочный файл в формате .txt

#python #save #multiline #pysimplegui #write

Вопрос:

Я хочу сохранить многострочный (PySimpleGui) в формате .txt.

 [sg.Multiline(
              enter_submits=True,
               key='_LOG_'
))]
 

Программа записывает в него

 window['_LOG_'].print('something')
 

и когда это будет сделано, он должен автоматически сохранить его в формате .txt.

Ответ №1:

Для этого вы можете использовать свой ключ. Нравится:

 import io

with io.open("data.txt", "w", encoding="utf8") as f:
    f.write(values['_LOG_'])
f.close()
 

Комментарии:

1. Да, я уже пробовал это, но это не работает :/

2. =(. Считывает ли ваш цикл значения? Например: окно, событие, значения = sg.read_all_windows()

3. Это работает только в том случае, если содержимое sg,Multiline элемента не изменилось после создания события. Открыть файл с with инструкцией автоматически закроет файл, поэтому f.close() в этом нет необходимости.

4. Спасибо за советы!

Ответ №2:

В цикле событий values содержится содержимое некоторых элементов до ваших действий для этого события, поэтому вы не можете использовать значение values['_LOG_'] для сохранения файла журнала.

Попробуйте использовать метод get of sg.Multiline , чтобы получить текущее содержимое sg.Multiline элемента.

         window['_LOG_'].print("Hello World")

        with open("LogFile.txt", "wt", encoding='UTF-8') as f:
            f.write(window['_LOG_'].get())
 

Комментарии:

1. Работал на меня. Тх!