python3+PyQt5实现自定义分数滑块部件
这篇文章主要为大家详细介绍了python3+pyqt5实现自定义分数滑块部件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文通过Python3+PyQt5实现自定义部件–分数滑块。它既能支持键盘也支持鼠标,使用物理(视口)坐标通过绘制方式显示。
#!/usr/bin/env python3import platformfrom PyQt5.QtCore import (QPointF, QRectF, QSize, Qt,pyqtSignal)from PyQt5.QtWidgets import (QApplication, QDialog,QSizePolicy, QGridLayout, QLCDNumber, QLabel, QSpinBox, QWidget)from PyQt5.QtGui import QColor,QFont,QPainter,QFontMetricsF,QPalette, QPolygonFX11 = Truetry: from PyQt5.QtGui import qt_x11_wait_for_window_managerexcept ImportError: X11 = Falseclass FractionSlider(QWidget): XMARGIN = 12.0 YMARGIN = 5.0 WSTRING = "999" valueChanged = pyqtSignal(int,int) def __init__(self, numerator=0, denominator=10, parent=None): super(FractionSlider, self).__init__(parent) self.__numerator = numerator self.__denominator = denominator self.setFocusPolicy(Qt.WheelFocus) self.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed)) def decimal(self): return self.__numerator / float(self.__denominator) def fraction(self): return self.__numerator, self.__denominator def sizeHint(self): return self.minimumSizeHint() def minimumSizeHint(self): font = QFont(self.font()) font.setPointSize(font.pointSize() - 1) fm = QFontMetricsF(font) return QSize(fm.width(FractionSlider.WSTRING) * self.__denominator, (fm.height() * 4) + FractionSlider.YMARGIN) def setFraction(self, numerator, denominator=None): if denominator is not None: if 3 <p></p><p>运行结果: <br></p><p style="text-align: center"><img src="https://img.php.cn/upload/article/000/153/291/69cec4fe1625d88295bd9305a6c1f01b-0.jpg" alt=""></p><p>