import os from PyQt5.QtCore import Qt from PyQt5.QtGui import * from PyQt5.QtWidgets import * def about_qt(): # 关于Qt QApplication.instance().aboutQt() class User(QLabel): # 自定义信号, 注意信号必须为类属性 # button_clicked_signal = pyqtSignal() def __init__(self): super(User, self).__init__() self.widget = QWidget(self) self.widget.setMaximumWidth(300) self.setObjectName('User') # todo:修改布局使适合微软todo的样式,设置点击事件,使用右键菜单的样式添加设置、同步、退出,暂时就这样 layout = QHBoxLayout() info_layout = QVBoxLayout() self.pic_label = QLabel('') self.pic_label.setObjectName('pic_label') self.pic_label.setPixmap( QPixmap(os.path.abspath('../') + '/images/user.svg').scaled(50, 50, Qt.IgnoreAspectRatio, Qt.SmoothTransformation)) layout.addWidget(self.pic_label, 2) self.user_name = QLabel("用户登录") self.user_name.setObjectName('user_name') self.user_mail = QLabel('794508986@qq.com') self.user_mail.setObjectName('user_mail') self.user_mail.setStyleSheet('font-size:16px') # self.menu_label = QLabel('') # self.menu_label.setObjectName('menu') # self.menu_label.setPixmap( # QPixmap(os.path.abspath('../') + '/images/up-down.svg').scaled(20, 20, Qt.IgnoreAspectRatio, # Qt.SmoothTransformation)) info_layout.addWidget(self.user_name) info_layout.addWidget(self.user_mail) layout.addLayout(info_layout, 4) layout.addStretch(1) # layout.addWidget(self.menu_label, 1) self.widget.setLayout(layout) # 设置右键菜单 self.context_menu = QMenu(self) self.init_menu() # def mouseReleaseEvent(self, QMouseEvent): # self.button_clicked_signal.emit() # # 可在外部与槽函数连接 用处不大 # def connect_customized_slot(self, func): # self.button_clicked_signal.connect(func) def contextMenuEvent(self, event): self.context_menu.exec_(event.globalPos()) def init_menu(self): # 背景透明 self.context_menu.setAttribute(Qt.WA_TranslucentBackground) # 无边框、去掉自带阴影 self.context_menu.setWindowFlags( self.context_menu.windowFlags() | Qt.FramelessWindowHint | Qt.NoDropShadowWindowHint) self.context_menu.addAction(QIcon(os.getcwd() + '/../images/setting.svg'), '设置', self.setting) self.context_menu.addAction(QIcon(os.getcwd() + '/../images/sync.svg'), '同步', self.sync) self.context_menu.addAction(QIcon(os.getcwd() + '/../images/exit.svg'), '退出', self.exit_account) # todo 设置右键点击事件 def setting(self): pass def sync(self): pass def exit_account(self): pass