femi_da
@femi_da

Что мне изменить в коде, чтобы в создаваемом документе отображалась дата, выбранная через календарь?

Добрый день, дико извиняюсь, но мне просто необходимо получить объяснение, потому что второй день ломаю голову.

Задача: сделать программу для автозаполнения одного типового документа. Программа в текущем виде вообще еще далека от нужного мне идеала, но вроде как все необходимые мне комбинации кода я уже подобрала и даже планировала окончательно "расчесать" его и делать оформление через КуТи Дезайнер, но вышла одна загвоздка.

Вопрос: дата документа. Я не хочу делать ее заполнение через функцию input, я хочу, чтобы удобно и красиво вылетал календарик, можно было выбрать дату и она бы автоматически уходила в документ. Что я делаю не так, что мне поставить вместо звездочек paragraph.text = paragraph.text.replace("date", ********)? У меня не получается присвоить переменную дате, или это в принципе не сделаешь через tkcalendar (а так хочется, я была уже так близко к завершению((()?

П.С. Не судите строго код в целом, я самоучка и в программировании максимум неделю, это моя вторая программа, которую я пытаюсь написать для работы, чтобы научиться писать код и понять логику действий.
П.С.2. По моему tkcalendar вообще здесь не подходит, все больше к этому склоняюсь, какие еще есть варианты?

Ссылка на шаблон https://drive.google.com/file/d/1QHLtZfcsVZ8vjkXdk...

from docxtpl import DocxTemplate
from datetime import date
import datetime
from docx.shared import Inches

doc = DocxTemplate("шаблон.docx")

# Номер приказа
number = input ( "Номер предыдущего приказа: " )
n = int (number) + 1

# Данные ответственного
last_names = input ( 'Фамилия ответственного в род. падеже: ' )
first_names = input ( 'Имя ответственного в род. падеже: ' )
add_names = input ( 'Отчество ответственного в род. падеже: ' )

# Сокращение ИО
full_names = str (str (last_names) + ' ' + str (first_names) + ' ' + str (add_names))

short_names = str (str (last_names) + '  ' + str (first_names [0]) + '. ' + str (add_names [0]) + '.')

# Адрес магазина               
address = input ( "Адрес магазина: " )

try:
    import tkinter as tk
    from tkinter import ttk
except ImportError:
    import Tkinter as tk
    import ttk

from tkcalendar import Calendar

def example1():
    def print_sel():
        a = str (cal.selection_get())
        print (a)
    def quit1():
        top.destroy()

    top = tk.Toplevel(root)

    cal = Calendar(top,
                   font="Arial 14", selectmode='day',
                   cursor="hand1", year=2021, month=1, day=1)
    cal.pack(fill="both", expand=True)
    ttk.Button(top, text="ok", command=print_sel).pack()

root = tk.Tk()
s = ttk.Style(root)
s.theme_use('clam')

ttk.Button(root, text='Календарь', command=example1).pack(padx=10, pady=10)

root.mainloop()

for paragraph in doc.paragraphs:
    paragraph.text = paragraph.text.replace("name", str (full_names))
    paragraph.text = paragraph.text.replace("address", str (address))
    paragraph.text = paragraph.text.replace("number", str (n))
    paragraph.text = paragraph.text.replace("short", str (short_names))
    paragraph.text = paragraph.text.replace("date", ********)
    
doc.save("test1.docx")<code>
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
@Alexa2007
Вместо звездочек наверное надо поставить cal.get_date()
Но из-за отсутствия "шаблон.docx" не могу утверждать..Проверить не получается. Просто дата выходит в консоль и на этом программа останавливается. Не падает, нет ошибок.. просто останавливается
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 10:00
10000 руб./за проект
29 мар. 2024, в 09:59
750 руб./в час
29 мар. 2024, в 09:55
50000 руб./за проект