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 @@ - @@ -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 + + + + + + + + + + +