From 4caa051a4f8874658d76d533d460c37cf2e5a56c Mon Sep 17 00:00:00 2001 From: Zerumarex Date: Sat, 14 Feb 2026 21:25:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82=D1=8C=20oo?= =?UTF-8?q?p-exam/date=5Faverage.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oop-exam/date_average.py | 95 ---------------------------------------- 1 file changed, 95 deletions(-) delete mode 100644 oop-exam/date_average.py diff --git a/oop-exam/date_average.py b/oop-exam/date_average.py deleted file mode 100644 index a47c1b5..0000000 --- a/oop-exam/date_average.py +++ /dev/null @@ -1,95 +0,0 @@ -from PyQt6.QtWidgets import ( - QApplication, QWidget, QVBoxLayout, QHBoxLayout, QListWidget, - QPushButton, QLabel, QDateEdit, QListWidgetItem -) -from PyQt6.QtCore import QDate -import sys - -class AverageDateCalculator(QWidget): - def __init__(self): - super().__init__() - self.setWindowTitle("Среднее значение дат") - self.resize(400, 300) - - self.layout = QVBoxLayout() - self.setLayout(self.layout) - - # Список дат - self.list_widget = QListWidget() - self.list_widget.setSelectionMode(QListWidget.SelectionMode.ExtendedSelection) - self.layout.addWidget(self.list_widget) - - # Кнопки для добавления/удаления - btn_layout = QHBoxLayout() - self.add_btn = QPushButton("Добавить сегодня") - self.remove_btn = QPushButton("Удалить выбранные") - btn_layout.addWidget(self.add_btn) - btn_layout.addWidget(self.remove_btn) - self.layout.addLayout(btn_layout) - - # Диапазон дат - range_layout = QHBoxLayout() - self.start_date = QDateEdit() - self.end_date = QDateEdit() - self.start_date.setCalendarPopup(True) - self.end_date.setCalendarPopup(True) - self.start_date.setDate(QDate.currentDate()) - self.end_date.setDate(QDate.currentDate()) - range_layout.addWidget(QLabel("С:")) - range_layout.addWidget(self.start_date) - range_layout.addWidget(QLabel("По:")) - range_layout.addWidget(self.end_date) - self.layout.addLayout(range_layout) - - # Вывод среднего - self.result_label = QLabel("Среднее: —") - self.layout.addWidget(self.result_label) - - # Сигналы - self.add_btn.clicked.connect(self.add_today) - self.remove_btn.clicked.connect(self.remove_selected) - self.list_widget.itemSelectionChanged.connect(self.compute_average) - self.start_date.dateChanged.connect(self.compute_average) - self.end_date.dateChanged.connect(self.compute_average) - - def add_today(self): - today = QDate.currentDate() - item = QListWidgetItem(today.toString("yyyy-MM-dd")) - self.list_widget.addItem(item) - self.compute_average() - - def remove_selected(self): - for item in self.list_widget.selectedItems(): - self.list_widget.takeItem(self.list_widget.row(item)) - self.compute_average() - - def compute_average(self): - # Собираем даты - selected_items = self.list_widget.selectedItems() - if selected_items: - dates = [QDate.fromString(item.text(), "yyyy-MM-dd") for item in selected_items] - else: - # Если ничего не выделено, берем все элементы в диапазоне - start = self.start_date.date() - end = self.end_date.date() - dates = [] - for i in range(self.list_widget.count()): - date = QDate.fromString(self.list_widget.item(i).text(), "yyyy-MM-dd") - if start <= date <= end: - dates.append(date) - - if not dates: - self.result_label.setText("Среднее: —") - return - - # Вычисляем среднее - days_sum = sum([date.toJulianDay() for date in dates]) - avg_day = days_sum // len(dates) - avg_date = QDate.fromJulianDay(avg_day) - self.result_label.setText(f"Среднее: {avg_date.toString('yyyy-MM-dd')}") - -if __name__ == "__main__": - app = QApplication(sys.argv) - window = AverageDateCalculator() - window.show() - sys.exit(app.exec()) \ No newline at end of file