Как создать файл file.txt, если во всплывающем окне щелкнуть sg.Submit () из PySimpleGUI? - PullRequest
2 голосов
/ 07 июля 2019

Я пытаюсь поместить эту строку кода в этот графический интерфейс ...


try:
    name_file = input('Name:')
    file= open(name_file, 'r+')
except FileNotFoundError:
    file= open(name_file, 'w+')
    file.writelines(u'file!')
file.close()

import PySimpleGUI as sg

layout = [
    [sg.Text('Name1', size=(15, 1), background_color="white" ), sg.InputText()],
    [sg.Text('Name2', size=(15, 1), background_color="white" ), sg.InputText()],
    [sg.Text('Name3', size=(15, 1), background_color="white" ), sg.InputText()],

    [sg.Submit(), sg.Cancel()]
]

window = sg.Window('Test', layout, background_color="white")
event, values = window.Read()
window.Close()
# print(event, values[0])

try:
    name_file = input('Name:')
    file= open(name_file, 'r+')
except FileNotFoundError:
    file= open(name_file, 'w+')
    file.writelines(u'file!')
file.close()

  • python 3.7 (импортировать PySimpleGUI как sg)

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Вы можете использовать высокоуровневые функции Popup, чтобы получить ваше имя файла, которое уберет требование открыть ваше собственное окно и сократит код до следующего:

import PySimpleGUI as sg

name_file = sg.PopupGetText('Enter Filename')
if name_file:
    try:
        file = open(name_file, 'r+')
    except FileNotFoundError:
        file = open(name_file, 'w+')
        file.writelines(u'file!')

Существует также Popup, который позволяет вам искать имя файла с именем PopupGetFile.Преимущество по сравнению с PopupGetText заключается в том, что вы получаете такую ​​же возможность вставлять имя файла в поле ввода, но вы также получаете кнопку «Сохранить как ...», чтобы найти файл, если вы предпочитаете этот способ.Используя его, ваш код будет:

import PySimpleGUI as sg

name_file = sg.PopupGetFile('Enter Filename', save_as=True)
if name_file:
    try:
        file = open(name_file, 'r+')
    except FileNotFoundError:
        file = open(name_file, 'w+')
        file.writelines(u'file!')
0 голосов
/ 07 июля 2019

Вам не нужно помещать это в GUI. Вы можете использовать его после GUI.

Вы можете использовать событие, чтобы проверить, какая кнопка была нажата, а затем вы можете запросить имя файла и записать данные в файл.

import PySimpleGUI as sg

layout = [
    [sg.Text('Name1', size=(15, 1), background_color="white" ), sg.InputText()],
    [sg.Text('Name2', size=(15, 1), background_color="white" ), sg.InputText()],
    [sg.Text('Name3', size=(15, 1), background_color="white" ), sg.InputText()],

    [sg.Submit(), sg.Cancel()]
]

window = sg.Window('Test', layout, background_color="white")
event, values = window.Read()
window.Close()

if event == 'Submit':
    try:
        name_file = input('Name:')
        file= open(name_file, 'r+')
    except FileNotFoundError:
        file= open(name_file, 'w+')

    all_values = values.values() # values from dictionary
    text = "\n".join(all_values) # put values in separated lines
    file.write(text)             # write all as one string

    file.close()

Вы можете создать графический интерфейс для запроса имени файла.


РЕДАКТИРОВАТЬ: Я использовал графический интерфейс для запроса имени файла.

import PySimpleGUI as sg

layout = [
    [sg.Text('Name1', size=(15, 1), background_color="white" ), sg.InputText()],
    [sg.Text('Name2', size=(15, 1), background_color="white" ), sg.InputText()],
    [sg.Text('Name3', size=(15, 1), background_color="white" ), sg.InputText()],

    [sg.Submit(), sg.Cancel()]
]

window = sg.Window('Test', layout, background_color="white")
event, values = window.Read()
window.Close()

if event == 'Submit':
    # create before next GUI because I want to use the same name for variable `values`
    all_values = values.values() # values from dictionary
    text = "\n".join(all_values) # put values in separated lines

    layout = [
        [sg.Text('Filename', size=(15, 1), background_color="white" ), sg.InputText()],

        [sg.Submit(), sg.Cancel()]
    ]

    window = sg.Window('Test', layout, background_color="white")
    event, values = window.Read()
    window.Close()

    if event == 'Submit':
        name_file = values[0]

        try:
            fh = open(name_file, 'r+')
        except FileNotFoundError:
            fh = open(name_file, 'w+')

        fh.write(text) # write all as one string

        fh.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...