0 / 0 / 0
Регистрация: 26.10.2022
Сообщений: 8

Программа для сбора отчетности

09.11.2022, 02:05. Показов 479. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Я тут верстаю программу для сбора отчетности со строительного участка
Вот исходный код программы:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from openpyxl import load_workbook
import tkinter as tk
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
 
def save():
    fn = 'Daily.xlsx'
    wb = load_workbook(fn)
    wb.save(fn)
    wb.close()
    messagebox.askokcancel('Сохранение', "Успешно сохранено!")
 
 
win = tk.Tk()
win.title("Ежедневный отчет")
win.geometry('900x500')
win.resizable(1, 1)
 
tab_control = ttk.Notebook(win)
 
tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
tab3 = ttk.Frame(tab_control)
tab_control.add(tab1, text='Главная')
tab_control.add(tab2, text='Персонал')
tab_control.add(tab3, text='Работы')
 
tab_control.pack(expand=1, fill='both')
 
e1 = tk.Entry(tab1, justify=CENTER)
e1.grid(row=1, column=1, padx=10, pady=10)
e2 = tk.Entry(tab2, justify=CENTER)
e2.grid(row=5, column=0, padx=10, pady=10)
e3 = tk.Entry(tab2, justify=CENTER)
e3.grid(row=5, column=1, padx=10, pady=10)
e4 = tk.Entry(tab3, justify=CENTER)
e4.grid(row=5, column=2, padx=10, pady=10)
e5 = tk.Entry(tab3)
e5.grid(row=5, column=3, padx=10, pady=10)
e6 = tk.Entry(tab3)
e6.grid(row=5, column=4, padx=10, pady=10)
e7 = tk.Entry(tab3, justify=CENTER)
e7.grid(row=5, column=5, padx=10, pady=10)
e8 = tk.Entry(tab3, justify=CENTER)
e8.grid(row=5, column=6, padx=10, pady=10)
e9 = tk.Entry(tab3, justify=CENTER)
e9.grid(row=5, column=7, padx=10, pady=10)
 
 
lb1 = tk.Label(tab1, text='Организация: ', font='Arial 12 bold')
lb1.grid(row=1, column=0, )
lb3 = tk.Label(tab2, text='Подразделение: ', font='Arial 12 bold')
lb3.grid(row=4, column=0)
lb4 = tk.Label(tab2, text='Кол-во чел.: ', font='Arial 12 bold')
lb4.grid(row=4, column=1)
lb5 = tk.Label(tab3, text='', font='Arial 12 bold')
lb5.grid(row=2, column=1)
lb7 = tk.Label(tab3, text='п/п', font='Arial 12 bold')
lb7.grid(row=4, column=2)
lb8 = tk.Label(tab3, text='Вид работ', font='Arial 12 bold')
lb8.grid(row=4, column=3)
lb9 = tk.Label(tab3, text='Наименование\nвыполненных работ', font='Arial 10 bold')
lb9.grid(row=4, column=4)
lb10 = tk.Label(tab3, text='Ед.изм', font='Arial 12 bold')
lb10.grid(row=4, column=5)
lb11 = tk.Label(tab3, text='Кол-во', font='Arial 12 bold')
lb11.grid(row=4, column=6)
lb12 = tk.Label(tab3, text='Координаты', font='Arial 10 bold')
lb12.grid(row=4, column=7)
 
 
btn1 = tk.Button(tab1, text='Создать отчет', font='Arial 12 bold', command=save, bg="green")
btn1.grid(row=10, column=7, sticky=E)
btn2 = tk.Button(tab2, text='+', font='Arial 12 bold', bg="gray")
btn2.grid(row=6, column=0, sticky=E)
btn3 = tk.Button(tab2, text='-', font='Arial 12 bold', bg="gray")
btn3.grid(row=6, column=1, sticky=W)
btn4 = tk.Button(tab3, text='+', font='Arial 12 bold', bg="gray")
btn4.grid(row=6, column=2, sticky=E)
btn5 = tk.Button(tab3, text='-', font='Arial 12 bold', bg="gray")
btn5.grid(row=6, column=3, sticky=W)
 
 
win.grid_columnconfigure(0, minsize=60)
win.grid_columnconfigure(1, minsize=60)
win.grid_columnconfigure(2, minsize=60)
win.grid_columnconfigure(3, minsize=60)
win.grid_columnconfigure(4, minsize=60)
win.grid_columnconfigure(5, minsize=60)
win.grid_columnconfigure(6, minsize=60)
win.grid_columnconfigure(7, minsize=60)
 
win.mainloop()

Вопросы в следующем:

1.Как при помощи кнопок +/- добавлять и удалять поля ввода
2. Как сохранить итог программы в Exel файл. В НОВЫЙ! Желательно название файла делать текущей датой на ПК

Я нашел одно видео на youtube, в коде указан метод "save". Но он сохраняет данные только в существующий файл, а это не очень удобно!

Заранее спасибо за внимание, программа в основном для личного пользования, хотелось бы оптимизировать процесс сдачи ежедневного отчёта.

Так же хотелось бы уточнить, можно ли программе задать какое то определенное расширение, которое она будет использовать при сохранении (кроме Exel). Чтоб при открытии сохраненного файла данные показывались в окне программы

Добавлено через 4 часа 23 минуты
С сохранением в эксель документ я разобрался, а вот с добавлением новых полей ввода нет.

Кто чем может помогите!!!

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
from tkinter import *
from openpyxl import load_workbook
import tkinter as tk
from tkinter import messagebox
from tkinter import ttk
from tkinter.ttk import Combobox
import pandas as pd
 
 
def save():
    value1 = e1.get()
    value2 = e2.get()
    value3 = e3.get()
    value4 = e4.get()
    value5 = e5.get()
    value6 = e6.get()
    value7 = e7.get()
    value8 = e8.get()
    value9 = e9.get()
 
    salaries1 = pd.DataFrame({'Организация: ' : [value1]})
 
    salaries2 = pd.DataFrame({'Подразделение: ' : [value2], 'Кол-во чел.: ' : [value3]})
 
    salaries3 = pd.DataFrame({'п/п' : [value4], 'Вид работ' : [value5], 'Наименование\nвыполненных работ' : [value6],
    'Ед.изм' : [value7], 'Кол-во' : [value8], 'Координаты' : [value9]})
 
    salary_sheets = {'Организация': salaries1, 'Персонал': salaries2, 'Работа': salaries3}
    writer = pd.ExcelWriter('./Daily.xlsx')
 
    for sheet_name in salary_sheets.keys():
        salary_sheets[sheet_name].to_excel(writer, sheet_name=sheet_name, index=False)
 
    writer.save()
 
    messagebox.askokcancel('Сохранение', "Успешно сохранено!")
 
 
win = tk.Tk()
win.title("Ежедневный отчет")
win.geometry('900x500')
win.resizable(1, 1)
 
tab_control = ttk.Notebook(win)
 
tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
tab3 = ttk.Frame(tab_control)
tab_control.add(tab1, text='Главная')
tab_control.add(tab2, text='Персонал')
tab_control.add(tab3, text='Работы')
 
tab_control.pack(expand=1, fill='both')
 
e1 = Combobox(tab1, values=('АО "Имсталькон"','ТОО "Имсталькон-Темиртау"','ТОО "ЦентрПромСтрой"','ТОО "АТЦ-Азия"'), justify=CENTER)
e1.grid(row=1, column=1, padx=10, pady=10)
e2 = Combobox(tab2, values=('Мастер', 'Прораб', 'Менеджер', 'Монтажник', 'Сварщик', 'Электрик', 'Бетонщик', 'Водитель л/а', 'Водитель а/к', 'Водитель самосвала'), justify=CENTER)
e2.grid(row=5, column=0, padx=10, pady=10)
e3 = tk.Entry(tab2, justify=CENTER)
e3.grid(row=5, column=1, padx=10, pady=10)
e4 = tk.Entry(tab3, justify=CENTER)
e4.grid(row=5, column=0, padx=10, pady=10)
e5 = Combobox(tab3, values=('Монтаж м/к', 'Монтаж трубопровода', 'Бетонирование'))
e5.grid(row=5, column=1, padx=10, pady=10)
e6 = tk.Entry(tab3)
e6.grid(row=5, column=2, padx=10, pady=10)
e7 = Combobox(tab3, values=('т', 'м2', 'м3', 'м/п', 'шт',), justify=CENTER)
e7.grid(row=5, column=3, padx=10, pady=10)
e8 = tk.Entry(tab3, justify=CENTER)
e8.grid(row=5, column=4, padx=10, pady=10)
e9 = tk.Entry(tab3, justify=CENTER)
e9.grid(row=5, column=5, padx=10, pady=10)
 
 
lb1 = tk.Label(tab1, text='Организация: ', font='Arial 12 bold')
lb1.grid(row=1, column=0, )
lb3 = tk.Label(tab2, text='Подразделение: ', font='Arial 12 bold')
lb3.grid(row=4, column=0)
lb4 = tk.Label(tab2, text='Кол-во чел.: ', font='Arial 12 bold')
lb4.grid(row=4, column=1)
lb7 = tk.Label(tab3, text='п/п', font='Arial 12 bold')
lb7.grid(row=4, column=0)
lb8 = tk.Label(tab3, text='Вид работ', font='Arial 12 bold')
lb8.grid(row=4, column=1)
lb9 = tk.Label(tab3, text='Наименование\nвыполненных работ', font='Arial 10 bold')
lb9.grid(row=4, column=2)
lb10 = tk.Label(tab3, text='Ед.изм', font='Arial 12 bold')
lb10.grid(row=4, column=3)
lb11 = tk.Label(tab3, text='Кол-во', font='Arial 12 bold')
lb11.grid(row=4, column=4)
lb12 = tk.Label(tab3, text='Координаты', font='Arial 10 bold')
lb12.grid(row=4, column=5)
 
 
btn1 = tk.Button(tab1, text='Создать отчет', font='Arial 12 bold', command=save, bg="green")
btn1.grid(row=10, column=7, sticky=E)
btn2 = tk.Button(tab2, text='+', font='Arial 12 bold', bg="gray")
btn2.grid(row=6, column=0, sticky=E)
btn3 = tk.Button(tab2, text='-', font='Arial 12 bold', bg="gray")
btn3.grid(row=6, column=1, sticky=W)
btn4 = tk.Button(tab3, text='+', font='Arial 12 bold', bg="gray")
btn4.grid(row=6, column=2, sticky=E)
btn5 = tk.Button(tab3, text='-', font='Arial 12 bold', bg="gray")
btn5.grid(row=6, column=3, sticky=W)
 
 
win.grid_columnconfigure(0, minsize=60)
win.grid_columnconfigure(1, minsize=60)
win.grid_columnconfigure(2, minsize=60)
win.grid_columnconfigure(3, minsize=60)
win.grid_columnconfigure(4, minsize=60)
win.grid_columnconfigure(5, minsize=60)
win.grid_columnconfigure(6, minsize=60)
win.grid_columnconfigure(7, minsize=60)
 
win.mainloop()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2022, 02:05
Ответы с готовыми решениями:

Программа для сбора отчетности
Здравствуйте! Работаю в строительной компании. Каждый день отчитываемся по выполненным работам и количеству персонала. Отчёт сдаём в...

Система сбора отчётности. Где найти такую?
Прошу администраторов простить меня за возможный оффтоп. Не знал куда поместить своё сообщение Скажите пожалуйста! Есть задача сбора...

Программа для отчетности бригады
Помогите пожалуста разобраться с построением задания, такое для меня еще слишком сложно Программы данного раздела должны иметь...

1
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.11.2022, 18:05
Цитата Сообщение от Roman_1234 Посмотреть сообщение
Как при помощи кнопок +/- добавлять и удалять поля ввода
это не проблема. проблема будет как вы потом будете извлекать данные из всех этих полей? вы с ООП знакомы?
есть такой виджет как рамка. вот разместив эти поля в рамке (тут бы и использовать ООП) вам нужно будет создать функцию которая будет добавлять класс рамки с полями ввода на главное окно. эти объекты рамок сохранять в список. вообщем в 2х словах не опишешь.
попробуйте освоить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2022, 18:05
Помогаю со студенческими работами здесь

Программа для сбора информации с дисплея
Доброго времени суток. Маленькое вступление: учился в ШАГе, C++ прошёл до простеньких функций. Сейчас хочу написать программу, которая...

Программа для сбора звука на win 64
Здравствуйте! Скажите пожалуйста как написать программу по записи звука в matlab win64. На win32 писал через строчку AI=analoginput. А вот...

Программа для сбора бонусов webmoney
Здравствуйте, дорогие форумчане!Хотел создать программу для собирание вебманий бонусов но возникли трудности с получения капчи(reCAPTCHA...

Программа для сбора часто встречаются слов на В-странице
Подскажите простую в использовании программу или веб ресурс для сбора часто встречаются слов на В-странице включая подкатегории. Неплохо...

Программа для сбора (с инет-порталов) и анализа данных (спортивная статистика).
как лучше сделать БД, добывающую свое содержимое с интернет-страницы, и предусматривающую мат.операции с содержащимися в ней данными? мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru