支持自定义选择导出聊天记录的日期

This commit is contained in:
shuaikangzhou 2024-01-10 00:03:31 +08:00
parent fe4e719012
commit f418339e8d
3 changed files with 21 additions and 10 deletions

View File

@ -7,13 +7,15 @@ from PyQt5.QtWidgets import QApplication, QDialog, QCheckBox, QMessageBox, QCale
class CalendarDialog(QDialog): class CalendarDialog(QDialog):
selected_date_signal = pyqtSignal(int) selected_date_signal = pyqtSignal(int)
def __init__(self, date_range=None, parent=None): def __init__(self, date_range=None, parent=None):
""" """
@param date_range: tuple[Union[QDate, datetime.date],Union[QDate, datetime.date]] @param date_range: tuple[Union[QDate, datetime.date],Union[QDate, datetime.date]] #限定的可选择范围
@param parent: @param parent:
""" """
super().__init__(parent) super().__init__(parent)
self.setWindowTitle('选择日期')
self.calendar = QCalendarWidget(self) self.calendar = QCalendarWidget(self)
self.calendar.clicked.connect(self.onDateChanged) self.calendar.clicked.connect(self.onDateChanged)
if date_range: if date_range:
@ -29,18 +31,19 @@ class CalendarDialog(QDialog):
mkt = int(time.mktime(s_t)) mkt = int(time.mktime(s_t))
timestamp = mkt timestamp = mkt
self.selected_date_signal.emit(timestamp) self.selected_date_signal.emit(timestamp)
print("Selected Date:", selected_date.toString("yyyy-MM-dd"),timestamp) print("Selected Date:", selected_date.toString("yyyy-MM-dd"), timestamp)
self.close() self.close()
if __name__ == '__main__': if __name__ == '__main__':
import sys import sys
from datetime import datetime from datetime import datetime
app = QApplication(sys.argv) app = QApplication(sys.argv)
# 设置日期范围 # 设置日期范围
start_date = datetime(2023, 12, 11) start_date = datetime(2023, 12, 11)
end_date = datetime(2024, 1, 9) end_date = datetime(2024, 1, 9)
date_range = (start_date.date(),end_date.date()) date_range = (start_date.date(), end_date.date())
ex = CalendarDialog(date_range=date_range) ex = CalendarDialog(date_range=date_range)
ex.show() ex.show()
sys.exit(app.exec_()) sys.exit(app.exec_())

View File

@ -105,7 +105,7 @@ class ExportDialog(QDialog, Ui_Dialog):
three_months_ago_date = three_months_ago.date() three_months_ago_date = three_months_ago.date()
three_months_ago_midnight = datetime.combine(three_months_ago_date, datetime.min.time()) three_months_ago_midnight = datetime.combine(three_months_ago_date, datetime.min.time())
three_months_ago_midnight_timestamp = int(three_months_ago_midnight.timestamp()) three_months_ago_midnight_timestamp = int(three_months_ago_midnight.timestamp())
self.time_range = (three_months_ago_midnight_timestamp,today_midnight_timestamp) self.time_range = (three_months_ago_midnight_timestamp, today_midnight_timestamp)
elif date_range == '自定义时间': elif date_range == '自定义时间':
self.time_range_view = TimeRangeDialog(parent=self) self.time_range_view = TimeRangeDialog(parent=self)
@ -116,9 +116,11 @@ class ExportDialog(QDialog, Ui_Dialog):
# "别急别急", # "别急别急",
# "马上就实现该功能" # "马上就实现该功能"
# ) # )
def set_time_range(self,time_range):
def set_time_range(self, time_range):
self.time_range = time_range self.time_range = time_range
self.comboBox_time.setCurrentIndex(2) self.comboBox_time.setCurrentIndex(2)
def export_data(self): def export_data(self):
self.btn_start.setEnabled(False) self.btn_start.setEnabled(False)
# 在这里获取用户选择的导出数据类型 # 在这里获取用户选择的导出数据类型
@ -141,7 +143,8 @@ class ExportDialog(QDialog, Ui_Dialog):
select_contacts.append(self.contacts[i]) select_contacts.append(self.contacts[i])
# 在这里根据用户选择的数据类型执行导出操作 # 在这里根据用户选择的数据类型执行导出操作
print("选择的文件格式:", file_types) print("选择的文件格式:", file_types)
self.worker = Output(select_contacts, type_=Output.Batch, message_types=selected_types, sub_type=file_types,time_range=self.time_range) self.worker = Output(select_contacts, type_=Output.Batch, message_types=selected_types, sub_type=file_types,
time_range=self.time_range)
# self.worker.progressSignal.connect(self.update_progress) # self.worker.progressSignal.connect(self.update_progress)
self.worker.okSignal.connect(self.export_finished) self.worker.okSignal.connect(self.export_finished)
self.worker.rangeSignal.connect(self.set_total_msg_num) self.worker.rangeSignal.connect(self.set_total_msg_num)

View File

@ -11,25 +11,28 @@ QToolButton{
color:#000000; color:#000000;
} }
''' '''
class TimeRangeDialog(QDialog, Ui_Dialog): class TimeRangeDialog(QDialog, Ui_Dialog):
date_range_signal = pyqtSignal(tuple) date_range_signal = pyqtSignal(tuple)
def __init__(self, date_range=None, parent=None): def __init__(self, date_range=None, parent=None):
""" """
@param date_range: tuple[Union[QDate, datetime.date],Union[QDate, datetime.date]] @param date_range: tuple[Union[QDate, datetime.date],Union[QDate, datetime.date]] 限定的可选择范围
@param parent: @param parent:
""" """
super().__init__(parent) super().__init__(parent)
self.calendar = None self.calendar = None
self.setupUi(self) self.setupUi(self)
self.setWindowTitle('选择日期范围')
self.setStyleSheet(Stylesheet) self.setStyleSheet(Stylesheet)
self.toolButton_start_time.clicked.connect(self.select_date_start) self.toolButton_start_time.clicked.connect(self.select_date_start)
self.toolButton_end_time.clicked.connect(self.select_date_end) self.toolButton_end_time.clicked.connect(self.select_date_end)
self.calendar = CalendarDialog(date_range=date_range, parent=self) self.calendar = CalendarDialog(date_range=date_range, parent=self)
self.calendar.selected_date_signal.connect(self.set_date) self.calendar.selected_date_signal.connect(self.set_date)
self.btn_ok.clicked.connect(self.ok) self.btn_ok.clicked.connect(self.ok)
self.btn_cancel.clicked.connect(lambda x:self.close()) self.btn_cancel.clicked.connect(lambda x: self.close())
self.start_time_flag = True self.start_time_flag = True
self.start_timestamp = 0 self.start_timestamp = 0
self.end_timestamp = 0 self.end_timestamp = 0
@ -38,17 +41,19 @@ class TimeRangeDialog(QDialog, Ui_Dialog):
if self.start_time_flag: if self.start_time_flag:
self.start_timestamp = timestamp self.start_timestamp = timestamp
date_object = datetime.fromtimestamp(timestamp) date_object = datetime.fromtimestamp(timestamp)
str_start =date_object.strftime("%Y-%m-%d") str_start = date_object.strftime("%Y-%m-%d")
self.toolButton_start_time.setText(str_start) self.toolButton_start_time.setText(str_start)
else: else:
date_object = datetime.fromtimestamp(timestamp) date_object = datetime.fromtimestamp(timestamp)
str_start = date_object.strftime("%Y-%m-%d") str_start = date_object.strftime("%Y-%m-%d")
self.end_timestamp = timestamp + 86399 self.end_timestamp = timestamp + 86399
self.toolButton_end_time.setText(str_start) self.toolButton_end_time.setText(str_start)
def ok(self): def ok(self):
date_range = (self.start_timestamp,self.end_timestamp) date_range = (self.start_timestamp, self.end_timestamp)
self.date_range_signal.emit(date_range) self.date_range_signal.emit(date_range)
self.close() self.close()
def select_date_start(self): def select_date_start(self):
self.start_time_flag = True self.start_time_flag = True
self.calendar.show() self.calendar.show()