WeChatMsg/app/ui/menu/export_time_range.py

93 lines
2.9 KiB
Python
Raw Normal View History

from datetime import datetime
from PyQt5 import QtWidgets
from PyQt5.QtCore import QTimer, QThread, pyqtSignal
from PyQt5.QtWidgets import QApplication, QDialog, QCheckBox, QMessageBox, QCalendarWidget, QWidget, QVBoxLayout, QLabel
from app.components.calendar_dialog import CalendarDialog
try:
from .time_range import Ui_Dialog
except:
from time_range import Ui_Dialog
Stylesheet = '''
QToolButton{
color:#000000;
}
QCalendarWidget QAbstractItemView:disabled {
}
QCalendarWidget QAbstractItemView:enabled{
}
'''
class TimeRangeDialog(QDialog, Ui_Dialog):
date_range_signal = pyqtSignal(tuple)
def __init__(self, date_range=None, parent=None):
"""
@param date_range: tuple[Union[QDate, datetime.date],Union[QDate, datetime.date]] 限定的可选择范围
@param parent:
"""
super().__init__(parent)
self.calendar = None
self.setupUi(self)
self.setWindowTitle('选择日期范围')
self.setStyleSheet(Stylesheet)
self.toolButton_start_time.clicked.connect(self.select_date_start)
self.toolButton_end_time.clicked.connect(self.select_date_end)
self.calendar = CalendarDialog(date_range=date_range, parent=self)
self.calendar.selected_date_signal.connect(self.set_date)
self.btn_ok.clicked.connect(self.ok)
self.btn_ok.setEnabled(False)
self.btn_ok_num = 0
self.btn_cancel.clicked.connect(lambda x: self.close())
self.start_time_flag = True
self.start_timestamp = 0
self.end_timestamp = 0
def set_date(self, timestamp):
if self.start_time_flag:
self.start_timestamp = timestamp
date_object = datetime.fromtimestamp(timestamp)
str_start = date_object.strftime("%Y-%m-%d")
self.toolButton_start_time.setText(str_start)
self.btn_ok_num += 1
else:
date_object = datetime.fromtimestamp(timestamp)
str_start = date_object.strftime("%Y-%m-%d")
self.end_timestamp = timestamp + 86399
self.toolButton_end_time.setText(str_start)
self.btn_ok_num += 1
if self.btn_ok_num == 2:
self.btn_ok.setEnabled(True)
def ok(self):
date_range = (self.start_timestamp, self.end_timestamp)
self.date_range_signal.emit(date_range)
self.close()
def select_date_start(self):
self.start_time_flag = True
self.calendar.set_start_date()
self.calendar.show()
def select_date_end(self):
self.start_time_flag = False
self.calendar.set_end_date()
self.calendar.show()
if __name__ == '__main__':
import sys
from datetime import datetime
app = QApplication(sys.argv)
# 设置日期范围
start_date = datetime(2023, 12, 11)
end_date = datetime(2024, 1, 9)
date_range = (start_date.date(), end_date.date())
ex = TimeRangeDialog(date_range=date_range)
ex.show()
sys.exit(app.exec_())