WeChatMsg/app/Ui/mainview.py

141 lines
5.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
"""
@File : mainview.py
@Author : Shuaikang Zhou
@Time : 2022/12/13 15:07
@IDE : Pycharm
@Version : Python3.10
@comment : 主窗口
"""
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from app.DataBase import data
from . import mainwindow
from .chat import chat
from .contact import contact
class MainWinController(QMainWindow, mainwindow.Ui_MainWindow):
exitSignal = pyqtSignal()
# username = ''
def __init__(self, username, parent=None):
super(MainWinController, self).__init__(parent)
self.setupUi(self)
self.setWindowTitle('WeChat')
self.setWindowIcon(QIcon('./app/data/icon.png'))
self.Me = data.get_myinfo()
self.setAttribute(Qt.WA_AttributeCount)
self.chatView = chat.ChatController(self.Me, parent=None)
self.chatView.setVisible(False)
# self.chatView.setLayout()
self.lay = QHBoxLayout()
self.frame_main.setLayout(self.lay)
self.lay.addWidget(self.chatView)
# self.frame_main.setLayout(self.chatView)
# self.frame_main.setLayout()
self.contactView = contact.ContactController(self.Me, parent=None)
self.contactView.setVisible(False)
self.lay0 = QHBoxLayout()
self.frame_main.setLayout(self.lay0)
self.lay.addWidget(self.contactView)
# self.myinfoView = userinfo.MyinfoController(self.Me, parent=self.frame_main)
# self.myinfoView.setVisible(False)
self.btn_chat.clicked.connect(self.chat_view) # 聊天按钮
self.btn_contact.clicked.connect(self.contact_view)
# self.btn_myinfo.clicked.connect(self.myInfo)
self.btn_about.clicked.connect(self.about)
self.now_btn = self.btn_chat
self.btn_about.setContextMenuPolicy(Qt.CustomContextMenu)
self.btn_about.customContextMenuRequested.connect(self.create_rightmenu) # 连接到菜单显示函数
self.last_btn = None
self.lastView = None
self.show_avatar()
# 创建右键菜单函数
def create_rightmenu(self):
# 菜单对象
self.groupBox_menu = QMenu(self)
self.actionA = QAction(QIcon('image/保存.png'), u'保存数据',
self) # self.actionA = self.contextMenu.addAction(QIcon("images/0.png"),u'| 动作A')
self.actionA.setShortcut('Ctrl+S') # 设置快捷键
self.groupBox_menu.addAction(self.actionA) # 把动作A选项添加到菜单
self.actionB = QAction(QIcon('image/删除.png'), u'删除数据', self)
self.groupBox_menu.addAction(self.actionB)
# self.actionA.triggered.connect(self.button) # 将动作A触发时连接到槽函数 button
# self.actionB.triggered.connect(self.button_2)
self.groupBox_menu.popup(QCursor.pos()) # 声明当鼠标在groupBox控件上右击时在鼠标位置显示右键菜单 ,exec_,popup两个都可以
def show_avatar(self):
avatar = data.get_avator(self.Me.username)
pixmap = QPixmap(avatar).scaled(80, 80) # 按指定路径找到图片
self.myavatar.setPixmap(pixmap) # 在label上显示图片
def chat_view(self):
"""
聊天窗口
"""
self.now_btn = self.btn_chat
self.now_btn.setStyleSheet(
"QPushButton {background-color: rgb(198,198,198);}")
if self.last_btn and self.last_btn != self.now_btn:
self.last_btn.setStyleSheet("QPushButton {background-color: rgb(240,240,240);}"
"QPushButton:hover{background-color: rgb(209,209,209);}\n")
self.last_btn = self.btn_chat
self.setviewVisible(self.chatView)
self.chatView.showChat()
def contact_view(self):
"""
联系人窗口
"""
self.now_btn = self.btn_contact
self.now_btn.setStyleSheet(
"QPushButton {background-color: rgb(198,198,198);}")
if self.last_btn and self.last_btn != self.now_btn:
self.last_btn.setStyleSheet("QPushButton {background-color: rgb(240,240,240);}"
"QPushButton:hover{background-color: rgb(209,209,209);}\n")
self.last_btn = self.btn_contact
self.setviewVisible(self.contactView)
self.contactView.showContact()
def myInfo(self):
"""
显示我的个人信息
"""
self.now_btn = self.btn_myinfo
self.now_btn.setStyleSheet(
"QPushButton {background-color: rgb(198,198,198);}")
if self.last_btn and self.last_btn != self.now_btn:
self.last_btn.setStyleSheet("QPushButton {background-color: rgb(240,240,240);}"
"QPushButton:hover{background-color: rgb(209,209,209);}\n")
self.last_btn = self.now_btn
self.setviewVisible(self.myinfoView)
def about(self):
"""
关于
"""
QMessageBox.about(self, "关于",
"关于作者\n姓名:周帅康\n邮箱lc863854@mail.nwpu.edu.cn"
)
def setviewVisible(self, view):
"""
设置窗口可见性
"""
view.setVisible(True)
if view != self.lastView and self.lastView:
self.lastView.setVisible(False)
self.lastView = view