Python 从PyQt中的QSlider删除焦点边框

Python 从PyQt中的QSlider删除焦点边框,python,pyqt,pyqt5,border,qslider,Python,Pyqt,Pyqt5,Border,Qslider,我正在寻找一种解决方案,以删除QSlider上外观糟糕的聚焦矩形。 除此之外,它看起来很糟糕,它覆盖了刻度,并且没有完全画出来。 这是一个古老的问题;我记得很多年前我就跌跌撞撞地撞上了它。变通办法 提到(例如)在我的Linux系统上不适用于滑块 将outline设置为none或使用Qt.WA_MacShowFocusRect在Linux上不起作用 slider.setStyleSheet('QSlider { outline:none; }') slider.setAttribute(Qt.WA

我正在寻找一种解决方案,以删除
QSlider
上外观糟糕的聚焦矩形。 除此之外,它看起来很糟糕,它覆盖了刻度,并且没有完全画出来。
这是一个古老的问题;我记得很多年前我就跌跌撞撞地撞上了它。变通办法 提到(例如)在我的Linux系统上不适用于滑块

将outline设置为none或使用Qt.WA_MacShowFocusRect在Linux上不起作用

slider.setStyleSheet('QSlider { outline:none; }')
slider.setAttribute(Qt.WA_MacShowFocusRect, 0)
“有效”的唯一方法是将焦点策略设置为
Qt.NoFocus
,这不是一个真正的错误 解决方案,因为可能需要使用键盘

slider.setFocusPolicy(Qt.NoFocus)
我在Linux上,这个问题涉及所有可用的主题。源代码:

#!/usr/bin/python


from PyQt5.QtWidgets import (QWidget, QSlider, QHBoxLayout,
                             QLabel, QApplication)
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
import sys


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        hbox = QHBoxLayout()

        sld = QSlider(Qt.Horizontal, self)
        # sld.setFocusPolicy(Qt.NoFocus)
        # sld.setStyleSheet('QSlider { outline:none; padding: 0 2 0 2;}')
        # sld.setAttribute(Qt.WA_MacShowFocusRect, 0)
        sld.setTickPosition(QSlider.TicksAbove)
        sld.setRange(0, 100)
        sld.setPageStep(5)

        sld.valueChanged.connect(self.changeValue)

        self.label = QLabel("0", self)
        self.label.setMinimumWidth(80)

        hbox.addWidget(sld)
        hbox.addSpacing(15)
        hbox.addWidget(self.label)

        self.setLayout(hbox)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('QSlider')
        self.show()

    def changeValue(self, value):

        self.label.setText(str(value))

def main():

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
截图:


打印(app.style().metaObject().className())的输出是什么?尝试使用
app.setStyle(“fusion”)
输出为QGtkStyle。对于fusion样式,没有矩形。
打印(app.style().metaObject().className())
的输出是什么?尝试使用
app.setStyle(“fusion”)
输出为QGtkStyle。对于fusion样式,没有矩形。