mirror of
https://github.com/LC044/WeChatMsg
synced 2025-02-22 02:22:17 +08:00
头像支持显示二进制
This commit is contained in:
parent
07b20a2f21
commit
286e2d627c
@ -4,17 +4,13 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="84e65474-7da9-466d-baf3-cc88dde3ffdd" name="变更" comment="修改UI">
|
<list default="true" id="84e65474-7da9-466d-baf3-cc88dde3ffdd" name="变更" comment="新增联系人头像组件">
|
||||||
<change afterPath="$PROJECT_DIR$/app/components/CAvatar.py" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/app/DataBase/misc.py" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/app/components/contact_info_ui.py" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/app/ui_pc/contact/__init__.py" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/app/ui_pc/contact/contact_window.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/DataBase/micro_msg.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/DataBase/micro_msg.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/components/CAvatar.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/components/CAvatar.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/components/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/components/__init__.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/components/contact_info_ui.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/components/contact_info_ui.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/person.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/person.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/person.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/person.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/contact/form.ui" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/ui_pc/contact/contact_window.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/contact/contact_window.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/ui_pc/mainview.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/ui_pc/mainview.py" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@ -174,7 +170,7 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="main" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="misc" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="WeChatMsg" />
|
<module name="WeChatMsg" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
<option name="PARENT_ENVS" value="true" />
|
<option name="PARENT_ENVS" value="true" />
|
||||||
@ -182,14 +178,14 @@
|
|||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/app/DataBase" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/main.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/app/DataBase/misc.py" />
|
||||||
<option name="PARAMETERS" value="" />
|
<option name="PARAMETERS" value="" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="true" />
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
||||||
<option name="REDIRECT_INPUT" value="false" />
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
@ -240,10 +236,10 @@
|
|||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Python.decrypt_window" />
|
<item itemvalue="Python.decrypt_window" />
|
||||||
|
<item itemvalue="Python.misc" />
|
||||||
|
<item itemvalue="Python.CAvatar" />
|
||||||
<item itemvalue="Python.contact_info_ui" />
|
<item itemvalue="Python.contact_info_ui" />
|
||||||
<item itemvalue="Python.test_avatar" />
|
<item itemvalue="Python.test_avatar" />
|
||||||
<item itemvalue="Python.CAvatar" />
|
|
||||||
<item itemvalue="Python.main" />
|
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
@ -259,13 +255,6 @@
|
|||||||
<option name="presentableId" value="Default" />
|
<option name="presentableId" value="Default" />
|
||||||
<updated>1672848140146</updated>
|
<updated>1672848140146</updated>
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00011" summary="优化加载页面">
|
|
||||||
<created>1675268807882</created>
|
|
||||||
<option name="number" value="00011" />
|
|
||||||
<option name="presentableId" value="LOCAL-00011" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1675268807882</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00012" summary="优化加载页面">
|
<task id="LOCAL-00012" summary="优化加载页面">
|
||||||
<created>1678034382207</created>
|
<created>1678034382207</created>
|
||||||
<option name="number" value="00012" />
|
<option name="number" value="00012" />
|
||||||
@ -602,7 +591,14 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1700052873083</updated>
|
<updated>1700052873083</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="60" />
|
<task id="LOCAL-00060" summary="新增联系人头像组件">
|
||||||
|
<created>1700056651470</created>
|
||||||
|
<option name="number" value="00060" />
|
||||||
|
<option name="presentableId" value="LOCAL-00060" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1700056651470</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="61" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="UnknownFeatures">
|
<component name="UnknownFeatures">
|
||||||
@ -638,7 +634,6 @@
|
|||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="VcsManagerConfiguration">
|
<component name="VcsManagerConfiguration">
|
||||||
<MESSAGE value="mainwindows文件修正" />
|
|
||||||
<MESSAGE value="match语法说明" />
|
<MESSAGE value="match语法说明" />
|
||||||
<MESSAGE value="增加群二维码" />
|
<MESSAGE value="增加群二维码" />
|
||||||
<MESSAGE value="支持导出csv格式聊天记录" />
|
<MESSAGE value="支持导出csv格式聊天记录" />
|
||||||
@ -663,7 +658,8 @@
|
|||||||
<MESSAGE value="删除多余的Word文件" />
|
<MESSAGE value="删除多余的Word文件" />
|
||||||
<MESSAGE value="修复无法查找wxid的bug" />
|
<MESSAGE value="修复无法查找wxid的bug" />
|
||||||
<MESSAGE value="修改UI" />
|
<MESSAGE value="修改UI" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="修改UI" />
|
<MESSAGE value="新增联系人头像组件" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="新增联系人头像组件" />
|
||||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
||||||
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
|
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
|
||||||
</component>
|
</component>
|
||||||
|
29
app/DataBase/misc.py
Normal file
29
app/DataBase/misc.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import os.path
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
DB = None
|
||||||
|
cursor = None
|
||||||
|
misc_path = "./app/Database/Msg/Misc.db"
|
||||||
|
# misc_path = './Msg/Misc.db'
|
||||||
|
if os.path.exists(misc_path):
|
||||||
|
DB = sqlite3.connect(misc_path, check_same_thread=False)
|
||||||
|
# '''创建游标'''
|
||||||
|
cursor = DB.cursor()
|
||||||
|
|
||||||
|
|
||||||
|
def get_avatar_buffer(userName):
|
||||||
|
sql = '''
|
||||||
|
select smallHeadBuf
|
||||||
|
from ContactHeadImg1
|
||||||
|
where usrName=?;
|
||||||
|
'''
|
||||||
|
cursor.execute(sql, [userName])
|
||||||
|
result = cursor.fetchall()
|
||||||
|
# print(result[0][0])
|
||||||
|
if result:
|
||||||
|
return result[0][0]
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
get_avatar_buffer('wxid_al2oan01b6fn11')
|
File diff suppressed because one or more lines are too long
@ -9,7 +9,7 @@ from .CAvatar import CAvatar
|
|||||||
|
|
||||||
# 自定义的item 继承自QListWidgetItem
|
# 自定义的item 继承自QListWidgetItem
|
||||||
class ContactQListWidgetItem(QListWidgetItem):
|
class ContactQListWidgetItem(QListWidgetItem):
|
||||||
def __init__(self, name, url):
|
def __init__(self, name, url, img_bytes=None):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
# 自定义item中的widget 用来显示自定义的内容
|
# 自定义item中的widget 用来显示自定义的内容
|
||||||
self.widget = QWidget()
|
self.widget = QWidget()
|
||||||
@ -18,7 +18,7 @@ class ContactQListWidgetItem(QListWidgetItem):
|
|||||||
self.nameLabel.setText(name)
|
self.nameLabel.setText(name)
|
||||||
# 用来显示avator(图像)
|
# 用来显示avator(图像)
|
||||||
self.avatorLabel = CAvatar(None, shape=CAvatar.Rectangle, size=QSize(60, 60),
|
self.avatorLabel = CAvatar(None, shape=CAvatar.Rectangle, size=QSize(60, 60),
|
||||||
url=url)
|
url=url, img_bytes=img_bytes)
|
||||||
# 设置布局用来对nameLabel和avatorLabel进行布局
|
# 设置布局用来对nameLabel和avatorLabel进行布局
|
||||||
self.hbox = QHBoxLayout()
|
self.hbox = QHBoxLayout()
|
||||||
self.hbox.addWidget(self.avatorLabel)
|
self.hbox.addWidget(self.avatorLabel)
|
||||||
|
@ -45,6 +45,7 @@ class ContactPC:
|
|||||||
self.alias = contact_info.get('Alias')
|
self.alias = contact_info.get('Alias')
|
||||||
self.nickName = contact_info.get('NickName')
|
self.nickName = contact_info.get('NickName')
|
||||||
self.smallHeadImgUrl = contact_info.get('smallHeadImgUrl')
|
self.smallHeadImgUrl = contact_info.get('smallHeadImgUrl')
|
||||||
|
self.smallHeadImgBLOG = b''
|
||||||
|
|
||||||
|
|
||||||
class Group(Person):
|
class Group(Person):
|
||||||
|
@ -1,13 +1,9 @@
|
|||||||
from random import randint
|
from PyQt5.QtWidgets import QWidget, QMessageBox
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt
|
from app.DataBase import micro_msg, misc
|
||||||
from PyQt5.QtWidgets import QWidget, QListWidgetItem, QLabel, QMessageBox
|
|
||||||
|
|
||||||
from app.DataBase import micro_msg
|
|
||||||
from app.components import ContactQListWidgetItem
|
from app.components import ContactQListWidgetItem
|
||||||
from app.person import ContactPC
|
from app.person import ContactPC
|
||||||
from .contactUi import Ui_Form
|
from .contactUi import Ui_Form
|
||||||
from ...Ui.Icon import Icon
|
|
||||||
|
|
||||||
# 美化样式表
|
# 美化样式表
|
||||||
Stylesheet = """
|
Stylesheet = """
|
||||||
@ -57,19 +53,6 @@ class ContactWindow(QWidget, Ui_Form):
|
|||||||
def init_ui(self):
|
def init_ui(self):
|
||||||
self.listWidget.clear()
|
self.listWidget.clear()
|
||||||
self.listWidget.currentRowChanged.connect(self.setCurrentIndex)
|
self.listWidget.currentRowChanged.connect(self.setCurrentIndex)
|
||||||
chat_item = QListWidgetItem(Icon.Chat_Icon, '解密', self.listWidget)
|
|
||||||
contact_item = QListWidgetItem(Icon.Contact_Icon, 'None', self.listWidget)
|
|
||||||
myinfo_item = QListWidgetItem(Icon.MyInfo_Icon, 'None', self.listWidget)
|
|
||||||
tool_item = QListWidgetItem(Icon.MyInfo_Icon, 'None', self.listWidget)
|
|
||||||
label = QLabel('我是页面', self)
|
|
||||||
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(label)
|
|
||||||
self.stackedWidget.addWidget(label)
|
|
||||||
self.listWidget.setCurrentRow(0)
|
self.listWidget.setCurrentRow(0)
|
||||||
self.stackedWidget.setCurrentIndex(0)
|
self.stackedWidget.setCurrentIndex(0)
|
||||||
|
|
||||||
@ -89,8 +72,9 @@ class ContactWindow(QWidget, Ui_Form):
|
|||||||
'smallHeadImgUrl': contact_info_list[7]
|
'smallHeadImgUrl': contact_info_list[7]
|
||||||
}
|
}
|
||||||
contact = ContactPC(contact_info)
|
contact = ContactPC(contact_info)
|
||||||
|
contact.smallHeadImgBLOG = misc.get_avatar_buffer(contact.wxid)
|
||||||
# pprint(contact.__dict__)
|
# pprint(contact.__dict__)
|
||||||
contact_item = ContactQListWidgetItem(contact.nickName, contact.smallHeadImgUrl)
|
contact_item = ContactQListWidgetItem(contact.nickName, contact.smallHeadImgUrl, contact.smallHeadImgBLOG)
|
||||||
self.listWidget.addItem(contact_item)
|
self.listWidget.addItem(contact_item)
|
||||||
self.listWidget.setItemWidget(contact_item, contact_item.widget)
|
self.listWidget.setItemWidget(contact_item, contact_item.widget)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user