mirror of
https://github.com/LC044/WeChatMsg
synced 2025-02-23 03:22:17 +08:00
支持自定义选择导出聊天记录的日期
This commit is contained in:
parent
fe4e719012
commit
f418339e8d
@ -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_())
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user