from datetime import datetime from PyQt5 import QtWidgets, QtGui, QtCore from PyQt5.QtCore import * import app.DataBase.data as data from app import person class ContactUi(QtWidgets.QPushButton): """ 联系人类,继承自pyqt的按钮,里面封装了联系人头像等标签 """ usernameSingal = pyqtSignal(str) def __init__(self, Ui, id=None, rconversation=None): super(ContactUi, self).__init__(Ui) self.contact: person.Contact = person.Contact(rconversation[1]) self.init_ui(Ui) self.msgCount = rconversation[0] self.username = rconversation[1] self.conversationTime = rconversation[6] self.msgType = rconversation[7] self.digest = rconversation[8] hasTrunc = rconversation[10] attrflag = rconversation[11] if hasTrunc == 0: if attrflag == 0: self.digest = '[动画表情]' elif attrflag == 67108864: try: remark = data.get_conRemark(rconversation[9]) msg = self.digest.split(':')[1].strip('\n').strip() self.digest = f'{remark}:{msg}' except Exception as e: pass else: pass self.show_info(id) def init_ui(self, Ui): self.layoutWidget = QtWidgets.QWidget(Ui) self.layoutWidget.setObjectName("layoutWidget") self.gridLayout1 = QtWidgets.QGridLayout(self.layoutWidget) self.gridLayout1.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize) self.gridLayout1.setContentsMargins(10, 10, 10, 10) self.gridLayout1.setSpacing(10) self.gridLayout1.setObjectName("gridLayout1") self.label_time = QtWidgets.QLabel(self.layoutWidget) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(8) self.label_time.setFont(font) self.label_time.setLayoutDirection(QtCore.Qt.RightToLeft) self.label_time.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) self.label_time.setObjectName("label_time") self.gridLayout1.addWidget(self.label_time, 0, 2, 1, 1) self.label_remark = QtWidgets.QLabel(self.layoutWidget) font = QtGui.QFont() font.setFamily("黑体") font.setPointSize(10) # font.setBold(True) self.label_remark.setFont(font) self.label_remark.setObjectName("label_remark") self.gridLayout1.addWidget(self.label_remark, 0, 1, 1, 1) self.label_msg = QtWidgets.QLabel(self.layoutWidget) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(8) self.label_msg.setFont(font) self.label_msg.setObjectName("label_msg") self.gridLayout1.addWidget(self.label_msg, 1, 1, 1, 2) self.label_avatar = QtWidgets.QLabel(self.layoutWidget) self.label_avatar.setMinimumSize(QtCore.QSize(60, 60)) self.label_avatar.setMaximumSize(QtCore.QSize(60, 60)) self.label_avatar.setLayoutDirection(QtCore.Qt.RightToLeft) self.label_avatar.setAutoFillBackground(False) self.label_avatar.setStyleSheet("background-color: #ffffff;") self.label_avatar.setInputMethodHints(QtCore.Qt.ImhNone) self.label_avatar.setFrameShape(QtWidgets.QFrame.NoFrame) self.label_avatar.setFrameShadow(QtWidgets.QFrame.Plain) self.label_avatar.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.label_avatar.setObjectName("label_avatar") self.gridLayout1.addWidget(self.label_avatar, 0, 0, 2, 1) self.gridLayout1.setColumnStretch(0, 1) self.gridLayout1.setColumnStretch(1, 6) self.gridLayout1.setRowStretch(0, 5) self.gridLayout1.setRowStretch(1, 3) self.setLayout(self.gridLayout1) self.setStyleSheet( "QPushButton {background-color: rgb(220,220,220);}" "QPushButton:hover{background-color: rgb(208,208,208);}\n" ) def show_info(self, id): time = datetime.now().strftime("%m-%d %H:%M") msg = '还没说话' self.label_avatar.setPixmap(self.contact.avatar) # 在label上显示图片 self.label_remark.setText(self.contact.conRemark) self.label_msg.setText(self.digest) self.label_time.setText(data.timestamp2str(self.conversationTime)[2:]) def show_msg(self): self.usernameSingal.emit(self.username)