Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.10.2022
Сообщений: 8

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

09.11.2022, 02:05. Показов 476. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru