PyQt之 美化篇

  1. 按钮美化

    • 通过qtawesome.icon为按钮添加图标

    • 通过setToolTip为按钮添加提示语

    1
    2
    self.button1 = QPushButton(qtawesome.icon('fa.file-code-o', color='black'), "按钮显示的文字") 
    self.button1.setToolTip('提示语')

    图标可于 https://fontawesome.dashgame.com/ 中筛选

    • 设置按钮透明度
    1
    2
    3
    op = QtWidgets.QGraphicsOpacityEffect()
    op.setOpacity(0.6)
    self.pushButton.setGraphicsEffect(op)
  1. 窗口美化

    通过QSS设定窗口的背景颜色、圆角化等,再设定透明度,美化窗口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    self.main_widget.setStyleSheet('''
    QWidget#left_widget{
    background:rgb(255,228,225);
    border-top:1px solid white;
    border-bottom:1px solid white;
    border-left:1px solid white;
    border-top-left-radius:10px;
    border-bottom-left-radius:10px;
    }
    QWidget#right_widget{
    background:rgb(152,245,255);
    border-top-right-radius:10px;
    border-bottom-right-radius:10px;
    }
    ''')
    1
    2
    self.setWindowOpacity(0.9)  # 设置窗口透明度
    self.setAttribute(QtCore.Qt.WA_TranslucentBackground) # 设置窗口背景透明
  2. 窗口边框美化

    窗口原来的边框过于简陋,因此加以隐藏

    self.setWindowFlag(QtCore.Qt.FramelessWindowHint) # 隐藏边框

    因为隐藏窗口边框之后,原来的关闭、最小最大化按钮随之隐藏,我们需要自己设计这些功能按钮

    1
    2
    3
    4
    5
    6
    7
    self.left_close = QtWidgets.QPushButton("")  # 关闭按钮
    self.left_visit = QtWidgets.QPushButton("") # 空白按钮
    self.left_mini = QtWidgets.QPushButton("") # 最小化按钮

    self.left_close.clicked.connect(self.close)
    self.left_visit.clicked.connect(self.showMaximized)
    self.left_mini.clicked.connect(self.showMinimized)

    对按钮加以美化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    self.left_close.setStyleSheet(
    '''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}''')
    self.left_visit.setStyleSheet(
    '''QPushButton{background:#F7D674;border-radius:5px;}QPushButton:hover{background:yellow;}''')
    self.left_mini.setStyleSheet(
    '''QPushButton{background:#6DDF6D;border-radius:5px;}QPushButton:hover{background:green;}''')

    self.left_close.setFixedSize(15,15) # 设置关闭按钮的大小
    self.left_visit.setFixedSize(15, 15) # 设置按钮大小
    self.left_mini.setFixedSize(15, 15) # 设置最小化按钮大小

    考虑到隐藏窗口之后,难以拖动窗口,我们需要自己编写鼠标拖动函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    def mousePressEvent(self, event):
    try:
    if event.button() == QtCore.Qt.LeftButton:
    self.m_flag = True
    self.m_Position = event.globalPos() - self.pos() # 获取鼠标相对窗口的位置
    event.accept()
    self.setCursor(QCursor(QtCore.Qt.OpenHandCursor)) # 更改鼠标图标
    except Exception as e:
    print(e)
    def mouseMoveEvent(self, QMouseEvent):
    try:
    if QtCore.Qt.LeftButton and self.m_flag:
    self.move(QMouseEvent.globalPos() - self.m_Position) # 更改窗口位置
    QMouseEvent.accept()
    except Exception as e:
    print(e)
    def mouseReleaseEvent(self, QMouseEvent):
    try:
    self.m_flag = False
    self.setCursor(QCursor(QtCore.Qt.ArrowCursor))
    except Exception as e:
    print(e)
  3. QTabWidget美化

    1
    2
    3
    str = "QTabBar::tab{background-color:rbg(255,0,255);}" + \
    "QTabBar::tab:selected{background-color:rgb(255,228,225);} "
    self.setStyleSheet(str)
  4. 设置QStyle样式

    app.setStyle(QStyleFactory.create("WindowsXP"))

  5. 添加图标

    1
    2
    3
    4
    5
    6
    7
    8
    icon = QtGui.QIcon()
    icon.addPixmap(QtGui.QPixmap("xxx.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)

    mainwindow.setWindowIcon(icon)

    button.setIcon(icon2)

    tab.setIcon(icon3)
不要打赏,只求关注呀QAQ