diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 4c87ef5..dde2923 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,12 +4,14 @@ - @@ -680,7 +681,8 @@ - @@ -704,17 +706,17 @@ file://$PROJECT_DIR$/app/person.py - 101 + 100 file://$PROJECT_DIR$/app/person.py - 99 + 98 file://$PROJECT_DIR$/app/person.py - 100 + 99 diff --git a/app/DataBase/micro_msg.py b/app/DataBase/micro_msg.py index 5c0b78d..6f1cba0 100644 --- a/app/DataBase/micro_msg.py +++ b/app/DataBase/micro_msg.py @@ -31,7 +31,6 @@ def get_contact(): from Contact inner join ContactHeadImgUrl on Contact.UserName = ContactHeadImgUrl.usrName where Type=3 and Alias is not null order by PYInitial - limit 30 ''' cursor.execute(sql) result = cursor.fetchall() diff --git a/app/DataBase/msg.py b/app/DataBase/msg.py index 4b4a94e..b720791 100644 --- a/app/DataBase/msg.py +++ b/app/DataBase/msg.py @@ -62,7 +62,7 @@ def get_message_by_num(username_, n): from MSG where StrTalker=? order by CreateTime - limit 10 + limit 100 ''' result = [] try: diff --git a/app/person.py b/app/person.py index 0ad5ad5..32c8dd4 100644 --- a/app/person.py +++ b/app/person.py @@ -64,7 +64,6 @@ class MePC: self.avatar.loadFromData(img_bytes, format='PNG') else: self.avatar.loadFromData(img_bytes, format='jfif') - self.avatar = QPixmap() class ContactPC: diff --git a/app/ui_pc/chat/chat_window.py b/app/ui_pc/chat/chat_window.py index c5e687f..386790d 100644 --- a/app/ui_pc/chat/chat_window.py +++ b/app/ui_pc/chat/chat_window.py @@ -46,6 +46,8 @@ HistoryPanel::item:hover { class ChatWindow(QWidget, Ui_Form): + load_finish_signal = pyqtSignal(bool) + def __init__(self, parent=None): super().__init__(parent) self.show_thread = None @@ -56,6 +58,7 @@ class ChatWindow(QWidget, Ui_Form): self.show_chats() def init_ui(self): + search_action = QAction(self.lineEdit) search_action.setIcon(Icon.Search_Icon) self.lineEdit.addAction(search_action, QLineEdit.LeadingPosition) @@ -74,6 +77,7 @@ class ChatWindow(QWidget, Ui_Form): return self.show_thread = ShowContactThread() self.show_thread.showSingal.connect(self.show_chat) + self.show_thread.load_finish_signal.connect(self.stop_loading) self.show_thread.start() self.ok_flag = True @@ -88,9 +92,14 @@ class ChatWindow(QWidget, Ui_Form): print(row) self.stackedWidget.setCurrentIndex(row) + def stop_loading(self, a0): + # self.label.setVisible(False) + self.load_finish_signal.emit(True) + class ShowContactThread(QThread): showSingal = pyqtSignal(ContactPC) + load_finish_signal = pyqtSignal(bool) # heightSingal = pyqtSignal(int) def __init__(self): @@ -113,3 +122,4 @@ class ShowContactThread(QThread): contact.set_avatar(contact.smallHeadImgBLOG) self.showSingal.emit(contact) # pprint(contact.__dict__) + self.load_finish_signal.emit(True) diff --git a/app/ui_pc/contact/contact_window.py b/app/ui_pc/contact/contact_window.py index 1496928..51f7102 100644 --- a/app/ui_pc/contact/contact_window.py +++ b/app/ui_pc/contact/contact_window.py @@ -46,6 +46,8 @@ HistoryPanel::item:hover { class ContactWindow(QWidget, Ui_Form): + load_finish_signal = pyqtSignal(bool) + def __init__(self, parent=None): super().__init__(parent) self.show_thread = None @@ -73,6 +75,7 @@ class ContactWindow(QWidget, Ui_Form): return self.show_thread = ShowContactThread() self.show_thread.showSingal.connect(self.show_contact) + self.show_thread.load_finish_signal.connect(self.load_finish_signal) self.show_thread.start() self.ok_flag = True @@ -90,6 +93,7 @@ class ContactWindow(QWidget, Ui_Form): class ShowContactThread(QThread): showSingal = pyqtSignal(ContactPC) + load_finish_signal = pyqtSignal(bool) # heightSingal = pyqtSignal(int) def __init__(self): @@ -112,3 +116,4 @@ class ShowContactThread(QThread): contact.set_avatar(contact.smallHeadImgBLOG) self.showSingal.emit(contact) # pprint(contact.__dict__) + self.load_finish_signal.emit(True) diff --git a/app/ui_pc/mainview.py b/app/ui_pc/mainview.py index 8d7165b..88e9967 100644 --- a/app/ui_pc/mainview.py +++ b/app/ui_pc/mainview.py @@ -7,6 +7,7 @@ @Version : Python3.10 @comment : 主窗口 """ +import json from random import randint from PyQt5.QtCore import * @@ -73,37 +74,65 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow): self.resize(QSize(800, 600)) # self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget) self.action_desc.triggered.connect(self.about) + self.load_data() self.init_ui() + self.load_num = 0 + + def load_data(self): + with open('./app/data/info.json', 'r', encoding='utf-8') as f: + dic = json.loads(f.read()) + wxid = dic.get('wxid') + if wxid: + me = MePC() + self.set_my_info(wxid) def init_ui(self): + # self.movie = QMovie("./app/data/loading.gif") + self.label = QLabel(self) + self.label.setGeometry(0, 0, self.width(), self.height()) + # self.label.setMovie(self.movie) + # self.movie.start() self.listWidget.currentRowChanged.connect(self.setCurrentIndex) + tool_item = QListWidgetItem(Icon.MyInfo_Icon, '工具', self.listWidget) chat_item = QListWidgetItem(Icon.Chat_Icon, '聊天', self.listWidget) contact_item = QListWidgetItem(Icon.Contact_Icon, '好友', self.listWidget) myinfo_item = QListWidgetItem(Icon.MyInfo_Icon, '我的', self.listWidget) - tool_item = QListWidgetItem(Icon.MyInfo_Icon, '工具', self.listWidget) tool_window = ToolWindow() tool_window.get_info_signal.connect(self.set_my_info) - self.chat_window = ChatWindow() - self.stackedWidget.addWidget(self.chat_window) - self.contact_window = ContactWindow() - # self.contact_window = QWidget() - self.stackedWidget.addWidget(self.contact_window) - label = QLabel('我是页面', self) + tool_window.load_finish_signal.connect(self.loading) + self.stackedWidget.addWidget(tool_window) + self.listWidget.setCurrentRow(0) + self.stackedWidget.setCurrentIndex(0) + chat_window = ChatWindow() + self.stackedWidget.addWidget(chat_window) + contact_window = ContactWindow() + self.stackedWidget.addWidget(contact_window) + label = QLabel('我是页面') label.setAlignment(Qt.AlignCenter) # 设置label的背景颜色(这里随机) # 这里加了一个margin边距(方便区分QStackedWidget和QLabel的颜色) label.setStyleSheet('background: rgb(%d, %d, %d);margin: 50px;' % ( randint(0, 255), randint(0, 255), randint(0, 255))) self.stackedWidget.addWidget(label) - self.stackedWidget.addWidget(tool_window) - self.listWidget.setCurrentRow(3) - self.stackedWidget.setCurrentIndex(3) + tool_window.load_finish_signal.connect(self.loading) + contact_window.load_finish_signal.connect(self.loading) + chat_window.load_finish_signal.connect(self.loading) + # self.load_window_thread = LoadWindowThread(self.stackedWidget) + # self.load_window_thread.okSignal.connect(self.stop_loading) + # self.load_window_thread.start() def setCurrentIndex(self, row): - if row == 1: - self.contact_window.show_contacts() self.stackedWidget.setCurrentIndex(row) + if row == 2: + self.stackedWidget.currentWidget().show_contacts() + + def setWindow(self, window): + try: + window.load_finish_signal.connect(self.loading) + except: + pass + self.stackedWidget.addWidget(window) def set_my_info(self, wxid): self.avatar = QPixmap() @@ -115,9 +144,24 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow): self.avatar.scaled(60, 60) me = MePC() me.set_avatar(img_bytes) + dic = { + 'wxid': wxid + } + with open('./app/data/info.json', 'w', encoding='utf-8') as f: + f.write(json.dumps(dic)) self.myavatar.setScaledContents(True) self.myavatar.setPixmap(self.avatar) + def stop_loading(self, a0): + self.label.setVisible(False) + + def loading(self, a0): + self.load_num += 1 + print('加载一个了') + if self.load_num == 2: + print('ok了') + self.label.setVisible(False) + def about(self): """ 关于 @@ -133,3 +177,26 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow): del self.stackedWidget msg.close() self.contact_window.close() + + +class LoadWindowThread(QThread): + windowSignal = pyqtSignal(QWidget) + okSignal = pyqtSignal(bool) + + def __init__(self, stackedWidget): + super().__init__() + self.stackedWidget = stackedWidget + + def run(self): + chat_window = ChatWindow() + self.stackedWidget.addWidget(chat_window) + contact_window = ContactWindow() + self.stackedWidget.addWidget(contact_window) + label = QLabel('我是页面') + label.setAlignment(Qt.AlignCenter) + # 设置label的背景颜色(这里随机) + # 这里加了一个margin边距(方便区分QStackedWidget和QLabel的颜色) + label.setStyleSheet('background: rgb(%d, %d, %d);margin: 50px;' % ( + randint(0, 255), randint(0, 255), randint(0, 255))) + self.stackedWidget.addWidget(label) + self.okSignal.emit(True) diff --git a/app/ui_pc/tool/tool_window.py b/app/ui_pc/tool/tool_window.py index 0963e2d..e6ddb59 100644 --- a/app/ui_pc/tool/tool_window.py +++ b/app/ui_pc/tool/tool_window.py @@ -46,12 +46,14 @@ HistoryPanel::item:hover { class ToolWindow(QWidget, Ui_Dialog): get_info_signal = pyqtSignal(str) + load_finish_signal = pyqtSignal(bool) def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.setStyleSheet(Stylesheet) self.init_ui() + self.load_finish_signal.emit(True) def init_ui(self): self.listWidget.clear()