Как присвоить функцию PySimpleGUI переменной Python?

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

```python
def get_id_card():
    exel_file = 'ИдАвтографиКарточки.xlsx'  # Необходимо выбирать этот файл через интерфейс
    df = pd.read_excel(exel_file)
    df.to_sql('car', connect, index=False, if_exists='replace')
    return df

sg.theme('Dark Grey 13')

layout = [
    [sg.Text('Filename')],
    [sg.Input(), sg.FileBrowse(), sg.Text()],
    [sg.OK(), sg.Cancel()]
]

window = sg.Window('Get filename example', layout)

event, values = window.read()
window.close()
```
  • 3 декабря 2023 г. 18:39
Ответы на вопрос 2
Чтобы интегрировать функцию выбора файла через PySimpleGUI в существующий код, вам нужно изменить функцию `get_id_card()` таким образом, чтобы она принимала имя файла в качестве аргумента. Затем вы можете изменить интерфейс так, чтобы после выбора файла и нажатия кнопки "ОК" имя файла отправлялось в функцию. 

Вот шаги для реализации:

1. Модифицируйте вашу функцию `get_id_card()` так, чтобы она принимала имя файла как аргумент:

```python
def get_id_card(exel_file):
    df = pd.read_excel(exel_file)
    df.to_sql('car', connect, index=False, if_exists='replace')
    return df
```

2. Используйте значения из графического интерфейса PySimpleGUI, чтобы получить выбранное имя файла и передать его в функцию `get_id_card()`:

```python
import PySimpleGUI as sg
import pandas as pd

# Ваша функция, теперь с аргументом для файла
def get_id_card(exel_file):
    df = pd.read_excel(exel_file)
    df.to_sql('car', connect, index=False, if_exists='replace')
    return df

# Настройки темы и макета интерфейса
sg.theme('Dark Grey 13')

layout = [
    [sg.Text('Выберите файл:')],
    [sg.Input(), sg.FileBrowse(key='FILE')],
    [sg.OK(), sg.Cancel()]
]

# Создание и отображение окна
window = sg.Window('Get filename example', layout)

while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Cancel'):
        break
    if event == 'OK':
        # Проверка, что пользователь выбрал файл
        if values['FILE']:
            filepath = values['FILE']
            # Передача этого пути файла в функцию
            df = get_id_card(filepath)
            print(df)  # Для демонстрации результата
        else:
            sg.popup('Файл не выбран!', title='Ошибка')

window.close()
```

Используя интерфейс PySimpleGUI, пользователь может выбрать файл через диалоговое окно "Browse" и этот файл будет аргументом для функции `get_id_card`. Обратите внимание, что выше приведено общее руководство и ваша реальная реализация может немного отличаться в зависимости от специфики вашего кода и требований.
Ищите в интернете информацию по ключевым словам "pysimplegui open file dialog", и вы найдёте множество релевантных источников. Посмотрите, например, эти две ссылки: https://stackoverflow.com/a/67069467 и https://www.pysimplegui.org/en/latest/#popup_get_file. Вот пример кода, который открывает диалоговое окно для выбора файла с помощью PySimpleGUI: `text = sg.popup_get_file('Please enter a file name') sg.popup('Results', 'The value returned from popup_get_file', text)` 
Похожие вопросы