Название файла из значения переменной

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

def save_report():
    filepath = asksaveasfilename(
        defaultextension="txt",
        filetypes=[("Текстовые файлы", "*.txt"), ("HTML файлы", "*.html")]
    )
    if not filepath:
        return
    with open(filepath, "w", encoding="UTF-8") as output_file:
        pt_name = patientName_entry.get()
        pt_date = patientDate_entry.get()
        pt_sex = patientSelectSex.get()

        vl_manifestation = manifestationSelect.get()
        vl_hearth = hearthSelect.get()
        vl_transformation = transformationSelect.get()
        vl_deficit = deficitSelect.get()
        vl_infarct = infarctSelect.get()
        vl_thrombolysis = thrombolysisSelect.get()

        vl_conclusion = conclusion.cget("text")

        locale.setlocale(locale.LC_ALL, '')
        report_date = datetime.now()
        report_date = report_date.strftime('%d %B %Y')

        text_report = (
            f'Assessing the risk of surgical intervention in stroke (ARSiS) report.\n'
            f'=====================================================================\n'
            f'отчет сформирован: {report_date}\n\n'
            f'ПАЦИЕНТ:\n{pt_name}\n'
            f'Дата рождения: {pt_date}\n'
            f'Пол: {pt_sex}\n'
            f'---------------------------------------------------------------------\n\n'
            f'АНАМНЕЗ / ДАННЫЕ ИССЛЕДОВАНИЙ:\n'
            f'1. Время с момента манифестации первых симптомов неврологического дефицита:\n'
            f'   -> {vl_manifestation}\n\n'
            f'2. Очаг ишемического инсульта в любом из диаметров, по данным КТ или МРТ головного мозга:\n'
            f'   -> {vl_hearth}\n\n'
            f'3. Геморрагическая трансформация ишемического очага в головном мозге:\n'
            f'   -> {vl_transformation}\n\n'
            f'4. Неврологический дефицит:\n'
            f'   -> {vl_deficit}\n\n'
            f'5. Острый инфаркт миокарда:\n'
            f'   -> {vl_infarct}\n\n'
            f'6. Состояние после тромболитической терапии:\n'
            f'   -> {vl_thrombolysis}\n'
            f'---------------------------------------------------------------------\n\n'
            f'ЗАКЛЮЧЕНИЕ:\n'
            f'{vl_conclusion}'
        )
        output_file.write(text_report)

Все прекрасно работает, но я хотел бы что бы при сохранении в файл, название автоматически формировалось из значений переменных patientName_entry и patientDate_entry. Сами переменные это текстовые поля, куда пользователь вручную вводит данные. Должно получится как-то так:

введите сюда описание изображения

Но как такое реализовать не понимаю. В качестве ориентира использовал материал этого вопроса.


Ответы (2 шт):

Автор решения: Stanislav Volodarskiy

Обратите внимание на initialfile= и initialdir= в Native Load/Save Dialogs:

from tkinter.filedialog import asksaveasfilename


patientName_entry = "Иванов Иван Иванович"
patientDate_entry = "12.12.1980"

f = asksaveasfilename(
    defaultextension="txt",
    filetypes=[("Текстовые файлы", "*.txt"), ("HTML файлы", "*.html")],
    initialfile=f'{patientName_entry} {patientDate_entry}.txt'
)

print(repr(f))
→ Ссылка
Автор решения: KLYSTRON

Благодаря ответу Stanislav Volodarskiy, удалось добиться поставленной цели. Ниже работающая функция. Может кому-то пригодится.

def save_report():
    pt_name = patientName_entry.get()
    pt_date = patientDate_entry.get()
    pt_sex = patientSelectSex.get()

    vl_manifestation = manifestationSelect.get()
    vl_hearth = hearthSelect.get()
    vl_transformation = transformationSelect.get()
    vl_deficit = deficitSelect.get()
    vl_infarct = infarctSelect.get()
    vl_thrombolysis = thrombolysisSelect.get()

    vl_conclusion = conclusion.cget("text")

    locale.setlocale(locale.LC_ALL, '')
    report_date = datetime.now()
    report_date = report_date.strftime('%d %B %Y')

    filepath = asksaveasfilename(
        defaultextension="txt",
        filetypes=[("Текстовые файлы", "*.txt"), ("HTML файлы", "*.html")],
        initialfile=f'{pt_name} {pt_date}.txt'
    )

    if not filepath:
        return
    with open(filepath, "w", encoding="UTF-8") as output_file:

        text_report = (
            f'Assessing the risk of surgical intervention in stroke (ARSiS) report.\n'
            f'=====================================================================\n'
            f'отчет сформирован: {report_date}\n\n'
            f'ПАЦИЕНТ:\n{pt_name}\n'
            f'Дата рождения: {pt_date}\n'
            f'Пол: {pt_sex}\n'
            f'---------------------------------------------------------------------\n\n'
            f'АНАМНЕЗ / ДАННЫЕ ИССЛЕДОВАНИЙ:\n'
            f'1. Время с момента манифестации первых симптомов неврологического дефицита:\n'
            f'   -> {vl_manifestation}\n\n'
            f'2. Очаг ишемического инсульта в любом из диаметров, по данным КТ или МРТ головного мозга:\n'
            f'   -> {vl_hearth}\n\n'
            f'3. Геморрагическая трансформация ишемического очага в головном мозге:\n'
            f'   -> {vl_transformation}\n\n'
            f'4. Неврологический дефицит:\n'
            f'   -> {vl_deficit}\n\n'
            f'5. Острый инфаркт миокарда:\n'
            f'   -> {vl_infarct}\n\n'
            f'6. Состояние после тромболитической терапии:\n'
            f'   -> {vl_thrombolysis}\n'
            f'---------------------------------------------------------------------\n\n'
            f'ЗАКЛЮЧЕНИЕ:\n'
            f'{vl_conclusion}'
        )
        output_file.write(text_report)
→ Ссылка