From 5849b8f692138f649c9875f53b8db5fff8b74ef4 Mon Sep 17 00:00:00 2001
From: shuaikangzhou <863909694@qq.com>
Date: Wed, 15 Nov 2023 22:59:25 +0800
Subject: [PATCH] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=81=94=E7=B3=BB=E4=BA=BA?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/workspace.xml | 27 ++-
app/person.py | 13 ++
app/ui_pc/contact/contactInfo.py | 132 +++++++++++
app/ui_pc/contact/contactInfoUi.py | 92 ++++++++
app/ui_pc/contact/contactInfoUi.ui | 168 ++++++++++++++
app/ui_pc/contact/contactUi.py | 8 +-
app/ui_pc/contact/contactUi.ui | 4 +-
app/ui_pc/contact/contact_window.py | 36 ++-
app/ui_pc/contact/userinfo/__init__.py | 9 +
app/ui_pc/contact/userinfo/userinfo.py | 15 ++
app/ui_pc/contact/userinfo/userinfoUi.py | 121 ++++++++++
app/ui_pc/contact/userinfo/userinfoUi.ui | 280 +++++++++++++++++++++++
12 files changed, 874 insertions(+), 31 deletions(-)
create mode 100644 app/ui_pc/contact/contactInfo.py
create mode 100644 app/ui_pc/contact/contactInfoUi.py
create mode 100644 app/ui_pc/contact/contactInfoUi.ui
create mode 100644 app/ui_pc/contact/userinfo/__init__.py
create mode 100644 app/ui_pc/contact/userinfo/userinfo.py
create mode 100644 app/ui_pc/contact/userinfo/userinfoUi.py
create mode 100644 app/ui_pc/contact/userinfo/userinfoUi.ui
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 5f03fbf..c1725e9 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,12 +4,11 @@
-
-
+
-
-
+
+
@@ -255,13 +254,6 @@
1672848140146
-
- 1678034382207
-
-
-
- 1678034382207
-
1680232548867
@@ -598,7 +590,14 @@
1700056651470
-
+
+ 1700058733119
+
+
+
+ 1700058733119
+
+
@@ -634,7 +633,6 @@
-
@@ -659,7 +657,8 @@
-
+
+
diff --git a/app/person.py b/app/person.py
index a614328..c03548e 100644
--- a/app/person.py
+++ b/app/person.py
@@ -1,9 +1,11 @@
import os.path
from typing import Dict
+from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from app.DataBase import data
+from app.ui_pc.Icon import Icon
# from app.Ui.Icon import Icon
@@ -46,6 +48,17 @@ class ContactPC:
self.nickName = contact_info.get('NickName')
self.smallHeadImgUrl = contact_info.get('smallHeadImgUrl')
self.smallHeadImgBLOG = b''
+ self.avatar = QPixmap()
+
+ def set_avatar(self, img_bytes):
+ if not img_bytes:
+ self.avatar.load(Icon.Default_avatar_path)
+ return
+ if img_bytes[:4] == b'\x89PNG':
+ self.avatar.loadFromData(img_bytes, format='PNG')
+ else:
+ self.avatar.loadFromData(img_bytes, format='jfif')
+ self.avatar.scaled(60, 60, Qt.IgnoreAspectRatio, Qt.SmoothTransformation)
class Group(Person):
diff --git a/app/ui_pc/contact/contactInfo.py b/app/ui_pc/contact/contactInfo.py
new file mode 100644
index 0000000..20b2d8e
--- /dev/null
+++ b/app/ui_pc/contact/contactInfo.py
@@ -0,0 +1,132 @@
+from PyQt5.QtCore import *
+from PyQt5.QtWidgets import *
+
+from app import person
+from app.DataBase import output
+from app.Ui.Icon import Icon
+from .contactInfoUi import Ui_Form
+from .userinfo import userinfo
+
+
+class ContactInfo(QWidget, Ui_Form):
+ exitSignal = pyqtSignal()
+ urlSignal = pyqtSignal(QUrl)
+
+ # username = ''
+ def __init__(self, contact, me: person.Me = None, parent=None):
+ super(ContactInfo, self).__init__(parent)
+ self.setupUi(self)
+ self.contact = contact
+ self.view_userinfo = userinfo.UserinfoController(self.contact)
+
+ # self.btn_analysis.clicked.connect(self.analysis)
+ # self.btn_emotion.clicked.connect(self.emotionale_Analysis)
+ # self.btn_report.clicked.connect(self.annual_report)
+ self.btn_back.clicked.connect(self.back)
+ self.Me = me
+ # self.
+ self.init_ui()
+
+ def init_ui(self):
+ self.btn_back.setIcon(Icon.Back)
+ self.btn_report.setIcon(Icon.Annual_Report_Icon)
+ self.btn_analysis.setIcon(Icon.Analysis_Icon)
+ self.btn_emotion.setIcon(Icon.Emotion_Icon)
+ self.label_remark.setText(self.contact.remark)
+ self.stackedWidget.addWidget(self.view_userinfo)
+ self.stackedWidget.setCurrentWidget(self.view_userinfo)
+ menu = QMenu(self)
+ self.toDocxAct = QAction(Icon.ToDocx, '导出Docx', self)
+ self.toCSVAct = QAction(Icon.ToCSV, '导出CSV', self)
+ self.toHtmlAct = QAction(Icon.ToHTML, '导出HTML', self)
+ self.toolButton_output.setPopupMode(QToolButton.MenuButtonPopup)
+ self.toolButton_output.clicked.connect(self.toolButton_show)
+ menu.addAction(self.toDocxAct)
+ menu.addAction(self.toCSVAct)
+ menu.addAction(self.toHtmlAct)
+ self.toolButton_output.setMenu(menu)
+ self.toolButton_output.setIcon(Icon.Output)
+ # self.toolButton_output.addSeparator()
+ self.toHtmlAct.triggered.connect(self.output)
+ self.toDocxAct.triggered.connect(self.output)
+ self.toCSVAct.triggered.connect(self.output)
+
+ def toolButton_show(self):
+ self.toolButton_output.showMenu()
+
+ def analysis(self):
+ self.stackedWidget.setCurrentWidget(self.view_analysis)
+ if 'room' in self.contact.wxid:
+ QMessageBox.warning(
+ self, '警告',
+ '暂不支持群组'
+ )
+ return
+ self.view_analysis.start()
+
+ def annual_report(self):
+ QMessageBox.warning(
+ self,
+ "提示",
+ "敬请期待"
+ )
+ return
+ # self.report = report.ReportController(self.contact)
+ # self.report.show()
+
+ def emotionale_Analysis(self):
+ self.stackedWidget.setCurrentWidget(self.view_emotion)
+ if 'room' in self.contact.wxid:
+ QMessageBox.warning(
+ self, '警告',
+ '暂不支持群组'
+ )
+ return
+ self.view_emotion.start()
+
+ def back(self):
+ """
+ 将userinfo界面设置为可见,其他界面设置为不可见
+ """
+ self.stackedWidget.setCurrentWidget(self.view_userinfo)
+
+ def output(self):
+ """
+ 导出聊天记录
+ :return:
+ """
+ self.stackedWidget.setCurrentWidget(self.view_userinfo)
+ if self.sender() == self.toDocxAct:
+ self.outputThread = output.Output(self.Me, self.contact.wxid)
+ elif self.sender() == self.toCSVAct:
+ print('开始导出csv')
+ self.outputThread = output.Output(self.Me, self.contact.wxid, type_=output.Output.CSV)
+ print('导出csv')
+ elif self.sender() == self.toHtmlAct:
+ print('功能暂未实现')
+ QMessageBox.warning(self,
+ "别急别急",
+ "马上就实现该功能"
+ )
+ return
+ self.outputThread.progressSignal.connect(self.output_progress)
+ self.outputThread.rangeSignal.connect(self.set_progressBar_range)
+ self.outputThread.okSignal.connect(self.hide_progress_bar)
+ self.outputThread.start()
+
+ def hide_progress_bar(self, int):
+ reply = QMessageBox(self)
+ reply.setIcon(QMessageBox.Information)
+ reply.setWindowTitle('OK')
+ reply.setText(f"导出聊天记录成功\n在.\\data\\目录下")
+ reply.addButton("确认", QMessageBox.AcceptRole)
+ reply.addButton("取消", QMessageBox.RejectRole)
+ api = reply.exec_()
+ self.view_userinfo.progressBar.setVisible(False)
+
+ def output_progress(self, value):
+ self.view_userinfo.progressBar.setProperty('value', value)
+
+ def set_progressBar_range(self, value):
+ self.view_userinfo.progressBar.setVisible(True)
+ self.view_userinfo.progressBar.setRange(0, value)
diff --git a/app/ui_pc/contact/contactInfoUi.py b/app/ui_pc/contact/contactInfoUi.py
new file mode 100644
index 0000000..aa973a1
--- /dev/null
+++ b/app/ui_pc/contact/contactInfoUi.py
@@ -0,0 +1,92 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'contactInfoUi.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.7
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Form(object):
+ def setupUi(self, Form):
+ Form.setObjectName("Form")
+ Form.resize(817, 748)
+ self.horizontalLayout = QtWidgets.QHBoxLayout(Form)
+ self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
+ self.horizontalLayout.setSpacing(0)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.frame = QtWidgets.QFrame(Form)
+ self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
+ self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.frame.setObjectName("frame")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.frame)
+ self.verticalLayout.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout.setSpacing(0)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_3.setSpacing(0)
+ self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+ self.label_remark = QtWidgets.QLabel(self.frame)
+ self.label_remark.setMaximumSize(QtCore.QSize(16777215, 100))
+ font = QtGui.QFont()
+ font.setPointSize(12)
+ self.label_remark.setFont(font)
+ self.label_remark.setText("")
+ self.label_remark.setObjectName("label_remark")
+ self.horizontalLayout_3.addWidget(self.label_remark)
+ self.btn_analysis = QtWidgets.QPushButton(self.frame)
+ self.btn_analysis.setStyleSheet("")
+ self.btn_analysis.setFlat(True)
+ self.btn_analysis.setObjectName("btn_analysis")
+ self.horizontalLayout_3.addWidget(self.btn_analysis)
+ self.btn_emotion = QtWidgets.QPushButton(self.frame)
+ self.btn_emotion.setFlat(True)
+ self.btn_emotion.setObjectName("btn_emotion")
+ self.horizontalLayout_3.addWidget(self.btn_emotion)
+ self.btn_report = QtWidgets.QPushButton(self.frame)
+ self.btn_report.setFlat(True)
+ self.btn_report.setObjectName("btn_report")
+ self.horizontalLayout_3.addWidget(self.btn_report)
+ self.btn_back = QtWidgets.QPushButton(self.frame)
+ self.btn_back.setFlat(True)
+ self.btn_back.setObjectName("btn_back")
+ self.horizontalLayout_3.addWidget(self.btn_back)
+ self.toolButton_output = QtWidgets.QToolButton(self.frame)
+ icon = QtGui.QIcon()
+ icon.addPixmap(QtGui.QPixmap("../../data/icons/output.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.toolButton_output.setIcon(icon)
+ self.toolButton_output.setCheckable(False)
+ self.toolButton_output.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup)
+ self.toolButton_output.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
+ self.toolButton_output.setAutoRaise(True)
+ self.toolButton_output.setArrowType(QtCore.Qt.NoArrow)
+ self.toolButton_output.setObjectName("toolButton_output")
+ self.horizontalLayout_3.addWidget(self.toolButton_output)
+ self.verticalLayout.addLayout(self.horizontalLayout_3)
+ self.stackedWidget = QtWidgets.QStackedWidget(self.frame)
+ self.stackedWidget.setObjectName("stackedWidget")
+ self.page_3 = QtWidgets.QWidget()
+ self.page_3.setObjectName("page_3")
+ self.stackedWidget.addWidget(self.page_3)
+ self.page_4 = QtWidgets.QWidget()
+ self.page_4.setObjectName("page_4")
+ self.stackedWidget.addWidget(self.page_4)
+ self.verticalLayout.addWidget(self.stackedWidget)
+ self.horizontalLayout.addWidget(self.frame)
+
+ self.retranslateUi(Form)
+ self.stackedWidget.setCurrentIndex(1)
+ QtCore.QMetaObject.connectSlotsByName(Form)
+
+ def retranslateUi(self, Form):
+ _translate = QtCore.QCoreApplication.translate
+ Form.setWindowTitle(_translate("Form", "Form"))
+ self.btn_analysis.setText(_translate("Form", "统计信息"))
+ self.btn_emotion.setText(_translate("Form", "情感分析"))
+ self.btn_report.setText(_translate("Form", "年度报告"))
+ self.btn_back.setText(_translate("Form", "退出"))
+ self.toolButton_output.setText(_translate("Form", "导出聊天记录"))
diff --git a/app/ui_pc/contact/contactInfoUi.ui b/app/ui_pc/contact/contactInfoUi.ui
new file mode 100644
index 0000000..18591fb
--- /dev/null
+++ b/app/ui_pc/contact/contactInfoUi.ui
@@ -0,0 +1,168 @@
+
+
+ Form
+
+
+
+ 0
+ 0
+ 817
+ 748
+
+
+
+ Form
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ 0
+
+
-
+
+
+
+ 16777215
+ 100
+
+
+
+
+ 12
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ 统计信息
+
+
+ true
+
+
+
+ -
+
+
+ 情感分析
+
+
+ true
+
+
+
+ -
+
+
+ 年度报告
+
+
+ true
+
+
+
+ -
+
+
+ 退出
+
+
+ true
+
+
+
+ -
+
+
+ 导出聊天记录
+
+
+
+ ../../data/icons/output.svg
+ ../../data/icons/output.svg
+
+
+
+ false
+
+
+ QToolButton::MenuButtonPopup
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ true
+
+
+ Qt::NoArrow
+
+
+
+
+
+ -
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/ui_pc/contact/contactUi.py b/app/ui_pc/contact/contactUi.py
index 2fb6c1d..aeada21 100644
--- a/app/ui_pc/contact/contactUi.py
+++ b/app/ui_pc/contact/contactUi.py
@@ -35,17 +35,11 @@ class Ui_Form(object):
self.horizontalLayout.addLayout(self.verticalLayout)
self.stackedWidget = QtWidgets.QStackedWidget(Form)
self.stackedWidget.setObjectName("stackedWidget")
- self.page = QtWidgets.QWidget()
- self.page.setObjectName("page")
- self.stackedWidget.addWidget(self.page)
- self.page_2 = QtWidgets.QWidget()
- self.page_2.setObjectName("page_2")
- self.stackedWidget.addWidget(self.page_2)
self.horizontalLayout.addWidget(self.stackedWidget)
self.horizontalLayout.setStretch(1, 1)
self.retranslateUi(Form)
- self.stackedWidget.setCurrentIndex(1)
+ self.stackedWidget.setCurrentIndex(-1)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
diff --git a/app/ui_pc/contact/contactUi.ui b/app/ui_pc/contact/contactUi.ui
index 4a432b1..b11ff70 100644
--- a/app/ui_pc/contact/contactUi.ui
+++ b/app/ui_pc/contact/contactUi.ui
@@ -71,10 +71,8 @@
-
- 1
+ -1
-
-
diff --git a/app/ui_pc/contact/contact_window.py b/app/ui_pc/contact/contact_window.py
index f109f52..7ee62ec 100644
--- a/app/ui_pc/contact/contact_window.py
+++ b/app/ui_pc/contact/contact_window.py
@@ -1,8 +1,10 @@
+from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QWidget, QMessageBox
from app.DataBase import micro_msg, misc
from app.components import ContactQListWidgetItem
from app.person import ContactPC
+from .contactInfo import ContactInfo
from .contactUi import Ui_Form
# 美化样式表
@@ -45,6 +47,7 @@ HistoryPanel::item:hover {
class ContactWindow(QWidget, Ui_Form):
def __init__(self, parent=None):
super().__init__(parent)
+ self.show_thread = None
self.setupUi(self)
self.setStyleSheet(Stylesheet)
self.init_ui()
@@ -60,6 +63,30 @@ class ContactWindow(QWidget, Ui_Form):
if not micro_msg.is_database_exist():
QMessageBox.critical(self, "错误", "数据库不存在\n请先解密数据库")
return
+ self.show_thread = ShowContactThread()
+ self.show_thread.showSingal.connect(self.show_contact)
+ self.show_thread.start()
+
+ def show_contact(self, contact):
+ contact_item = ContactQListWidgetItem(contact.nickName, contact.smallHeadImgUrl, contact.smallHeadImgBLOG)
+ self.listWidget.addItem(contact_item)
+ self.listWidget.setItemWidget(contact_item, contact_item.widget)
+ contact_info_window = ContactInfo(contact)
+ self.stackedWidget.addWidget(contact_info_window)
+
+ def setCurrentIndex(self, row):
+ print(row)
+ self.stackedWidget.setCurrentIndex(row)
+
+
+class ShowContactThread(QThread):
+ showSingal = pyqtSignal(ContactPC)
+
+ # heightSingal = pyqtSignal(int)
+ def __init__(self):
+ super().__init__()
+
+ def run(self) -> None:
contact_info_lists = micro_msg.get_contact()
for contact_info_list in contact_info_lists:
# UserName, Alias,Type,Remark,NickName,PYInitial,RemarkPYInitial,ContactHeadImgUrl.smallHeadImgUrl,ContactHeadImgUrl,bigHeadImgUrl
@@ -73,11 +100,6 @@ class ContactWindow(QWidget, Ui_Form):
}
contact = ContactPC(contact_info)
contact.smallHeadImgBLOG = misc.get_avatar_buffer(contact.wxid)
+ contact.set_avatar(contact.smallHeadImgBLOG)
+ self.showSingal.emit(contact)
# pprint(contact.__dict__)
- contact_item = ContactQListWidgetItem(contact.nickName, contact.smallHeadImgUrl, contact.smallHeadImgBLOG)
- self.listWidget.addItem(contact_item)
- self.listWidget.setItemWidget(contact_item, contact_item.widget)
-
- def setCurrentIndex(self, row):
- print(row)
- self.stackedWidget.setCurrentIndex(row)
diff --git a/app/ui_pc/contact/userinfo/__init__.py b/app/ui_pc/contact/userinfo/__init__.py
new file mode 100644
index 0000000..6d32454
--- /dev/null
+++ b/app/ui_pc/contact/userinfo/__init__.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+"""
+@File : __init__.py.py
+@Author : Shuaikang Zhou
+@Time : 2022/12/24 10:34
+@IDE : Pycharm
+@Version : Python3.10
+@comment : ···
+"""
diff --git a/app/ui_pc/contact/userinfo/userinfo.py b/app/ui_pc/contact/userinfo/userinfo.py
new file mode 100644
index 0000000..5a6ac0b
--- /dev/null
+++ b/app/ui_pc/contact/userinfo/userinfo.py
@@ -0,0 +1,15 @@
+from PyQt5.QtWidgets import *
+
+from .userinfoUi import Ui_Frame
+
+
+class UserinfoController(QWidget, Ui_Frame):
+ def __init__(self, contact, parent=None):
+ super().__init__(parent)
+ self.setupUi(self)
+ self.l_remark.setText(contact.remark)
+ self.l_avatar.setPixmap(contact.avatar)
+ self.l_nickname.setText(f'昵称:{contact.nickName}')
+ self.l_username.setText(f'微信号:{contact.alias}')
+ self.lineEdit.setText(contact.remark)
+ self.progressBar.setVisible(False)
diff --git a/app/ui_pc/contact/userinfo/userinfoUi.py b/app/ui_pc/contact/userinfo/userinfoUi.py
new file mode 100644
index 0000000..8154cf6
--- /dev/null
+++ b/app/ui_pc/contact/userinfo/userinfoUi.py
@@ -0,0 +1,121 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'userinfoUi.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.7
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_Frame(object):
+ def setupUi(self, Frame):
+ Frame.setObjectName("Frame")
+ Frame.resize(800, 720)
+ Frame.setCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor))
+ Frame.setMouseTracking(True)
+ Frame.setTabletTracking(True)
+ self.horizontalLayout_3 = QtWidgets.QHBoxLayout(Frame)
+ self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem)
+ self.verticalLayout = QtWidgets.QVBoxLayout()
+ self.verticalLayout.setObjectName("verticalLayout")
+ spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.verticalLayout.addItem(spacerItem1)
+ self.gridLayout = QtWidgets.QGridLayout()
+ self.gridLayout.setHorizontalSpacing(6)
+ self.gridLayout.setObjectName("gridLayout")
+ self.l_avatar = QtWidgets.QLabel(Frame)
+ self.l_avatar.setMinimumSize(QtCore.QSize(80, 80))
+ self.l_avatar.setMaximumSize(QtCore.QSize(80, 80))
+ self.l_avatar.setText("")
+ self.l_avatar.setPixmap(QtGui.QPixmap("../../../a_img/be0fa6c0c4707fb5f7b37b660de826d3.jpg"))
+ self.l_avatar.setScaledContents(True)
+ self.l_avatar.setObjectName("l_avatar")
+ self.gridLayout.addWidget(self.l_avatar, 0, 0, 3, 1)
+ self.l_remark = QtWidgets.QLabel(Frame)
+ self.l_remark.setMinimumSize(QtCore.QSize(0, 30))
+ self.l_remark.setMaximumSize(QtCore.QSize(16777215, 30))
+ font = QtGui.QFont()
+ font.setPointSize(15)
+ self.l_remark.setFont(font)
+ self.l_remark.setObjectName("l_remark")
+ self.gridLayout.addWidget(self.l_remark, 0, 1, 1, 1)
+ self.l_nickname = QtWidgets.QLabel(Frame)
+ self.l_nickname.setMinimumSize(QtCore.QSize(0, 30))
+ self.l_nickname.setMaximumSize(QtCore.QSize(16777215, 30))
+ self.l_nickname.setObjectName("l_nickname")
+ self.gridLayout.addWidget(self.l_nickname, 1, 1, 1, 1)
+ self.l_username = QtWidgets.QLabel(Frame)
+ self.l_username.setMinimumSize(QtCore.QSize(0, 20))
+ self.l_username.setMaximumSize(QtCore.QSize(16777215, 20))
+ self.l_username.setObjectName("l_username")
+ self.gridLayout.addWidget(self.l_username, 2, 1, 1, 1)
+ self.gridLayout.setRowStretch(0, 1)
+ self.gridLayout.setRowStretch(1, 1)
+ self.gridLayout.setRowStretch(2, 1)
+ self.verticalLayout.addLayout(self.gridLayout)
+ spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.verticalLayout.addItem(spacerItem2)
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.label = QtWidgets.QLabel(Frame)
+ self.label.setMinimumSize(QtCore.QSize(80, 0))
+ self.label.setMaximumSize(QtCore.QSize(80, 16777215))
+ font = QtGui.QFont()
+ font.setPointSize(15)
+ self.label.setFont(font)
+ self.label.setObjectName("label")
+ self.horizontalLayout.addWidget(self.label)
+ self.lineEdit = QtWidgets.QLineEdit(Frame)
+ self.lineEdit.setMinimumSize(QtCore.QSize(0, 25))
+ self.lineEdit.setMaximumSize(QtCore.QSize(16777215, 25))
+ font = QtGui.QFont()
+ font.setPointSize(15)
+ self.lineEdit.setFont(font)
+ self.lineEdit.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
+ self.lineEdit.setAutoFillBackground(False)
+ self.lineEdit.setStyleSheet("background:transparent;border-width:0;border-style:outset")
+ self.lineEdit.setObjectName("lineEdit")
+ self.horizontalLayout.addWidget(self.lineEdit)
+ self.verticalLayout.addLayout(self.horizontalLayout)
+ spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.verticalLayout.addItem(spacerItem3)
+ self.progressBar = QtWidgets.QProgressBar(Frame)
+ self.progressBar.setProperty("value", 24)
+ self.progressBar.setObjectName("progressBar")
+ self.verticalLayout.addWidget(self.progressBar)
+ spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+ self.verticalLayout.addItem(spacerItem4)
+ self.verticalLayout.setStretch(0, 2)
+ self.verticalLayout.setStretch(1, 3)
+ self.verticalLayout.setStretch(2, 4)
+ self.verticalLayout.setStretch(3, 1)
+ self.verticalLayout.setStretch(4, 4)
+ self.verticalLayout.setStretch(5, 1)
+ self.verticalLayout.setStretch(6, 2)
+ self.horizontalLayout_2.addLayout(self.verticalLayout)
+ spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem5)
+ self.horizontalLayout_2.setStretch(0, 1)
+ self.horizontalLayout_2.setStretch(1, 2)
+ self.horizontalLayout_2.setStretch(2, 1)
+ self.horizontalLayout_3.addLayout(self.horizontalLayout_2)
+
+ self.retranslateUi(Frame)
+ QtCore.QMetaObject.connectSlotsByName(Frame)
+
+ def retranslateUi(self, Frame):
+ _translate = QtCore.QCoreApplication.translate
+ Frame.setWindowTitle(_translate("Frame", "Frame"))
+ self.l_remark.setText(_translate("Frame", "曹雨萱"))
+ self.l_nickname.setText(_translate("Frame", "昵称:997"))
+ self.l_username.setText(_translate("Frame", "账号:TextLabel"))
+ self.label.setText(_translate("Frame", "备注名"))
+ self.lineEdit.setText(_translate("Frame", "曹雨萱"))
diff --git a/app/ui_pc/contact/userinfo/userinfoUi.ui b/app/ui_pc/contact/userinfo/userinfoUi.ui
new file mode 100644
index 0000000..3bba2de
--- /dev/null
+++ b/app/ui_pc/contact/userinfo/userinfoUi.ui
@@ -0,0 +1,280 @@
+
+
+ Frame
+
+
+
+ 0
+ 0
+ 800
+ 720
+
+
+
+ IBeamCursor
+
+
+ true
+
+
+ true
+
+
+ Frame
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ 6
+
+
-
+
+
+
+ 80
+ 80
+
+
+
+
+ 80
+ 80
+
+
+
+
+
+
+ ../../../a_img/be0fa6c0c4707fb5f7b37b660de826d3.jpg
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+
+ 15
+
+
+
+ 曹雨萱
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ 16777215
+ 30
+
+
+
+ 昵称:997
+
+
+
+ -
+
+
+
+ 0
+ 20
+
+
+
+
+ 16777215
+ 20
+
+
+
+ 账号:TextLabel
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
-
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+
+ 15
+
+
+
+ 备注名
+
+
+
+ -
+
+
+
+ 0
+ 25
+
+
+
+
+ 16777215
+ 25
+
+
+
+
+ 15
+
+
+
+ ArrowCursor
+
+
+ false
+
+
+
+ background:transparent;border-width:0;border-style:outset
+
+
+
+ 曹雨萱
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ 24
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+