Название файла из значения переменной
Ночи! В связи с расширением функционала приложения появилась необходимость сохранять результат работы программы в небольшой текстовый отчет, для чего использую такую функцию:
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 шт):
Обратите внимание на 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))
Благодаря ответу 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)
