PyQt5 – 按钮的虚线边界

  • Post category:Python

让我们来详细讲解 Python 的 PyQt5 库中按钮的虚线边界使用攻略。

什么是 PyQT5 中的按钮虚线边界?

PyQT5 中的按钮虚线边界是指,当鼠标点击某个按钮并且按钮已被激活时,在按钮周围生成虚线框的效果。

如何实现 PyQT5 中的按钮虚线边界?

在 PyQT5 中实现按钮虚线边界效果非常简单。首先,需要给按钮添加一个焦点策略即可。代码如下:

# 设置焦点策略,只有当一个控件接受到键盘焦点后,才会生效
self.button.setFocusPolicy(QtCore.Qt.StrongFocus)

接下来,需要为按钮添加一个 CSS 样式。其中,outline-style:none; 是用于消除按钮虚线边界效果的。代码如下:

# 应用CSS样式
self.button.setStyleSheet("""
    QPushButton:focus {
        outline-style:none;    
    }
""")

完整代码示例:

import sys

from PyQt5 import QtWidgets, QtCore, QtGui


class MyWindow(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        # 创建一个按钮
        self.button = QtWidgets.QPushButton('Click here', self)
        self.button.setGeometry(QtCore.QRect(50, 50, 150, 50))
        self.button.clicked.connect(self.button_click)

        # 设置按钮样式
        self.button.setStyleSheet("""
            QPushButton {
                border: 2px solid blue;
                font-size: 20px;
                color: blue;
            }
            QPushButton:focus {
                outline-style:none;    
            }
        """)

        # 设置焦点策略
        self.button.setFocusPolicy(QtCore.Qt.StrongFocus)

    def button_click(self):
        print('You clicked me!')

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

按钮在不同状态下虚线边界的变化

除了默认状态外,按钮在不同的状态下虚线边界会有所变化,如按下状态、鼠标移上去等。在 PyQT5 中,我们同样可以实现这种状态切换效果。

import sys

from PyQt5 import QtWidgets, QtCore, QtGui


class MyWindow(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        # 创建一个按钮
        self.button = QtWidgets.QPushButton('Click here', self)
        self.button.setGeometry(QtCore.QRect(50, 50, 150, 50))
        self.button.clicked.connect(self.button_click)

        # 设置按钮样式
        self.button.setStyleSheet("""
            QPushButton {
                border: 2px solid blue;
                font-size: 20px;
                color: blue;
            }
            QPushButton:focus {
                outline-style: none;    
            }
            QPushButton:pressed {
                border: 2px solid red;
            }
            QPushButton:hover {
                border: 2px solid gray;
            }
        """)

        # 设置焦点策略
        self.button.setFocusPolicy(QtCore.Qt.StrongFocus)

    def button_click(self):
        print('You clicked me!')

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

以上就是 PyQT5 中按钮虚线边界的使用攻略,希望对您有所帮助!