PHP前端开发

python3+PyQt5实现自定义分数滑块部件

百变鹏仔 2个月前 (02-07) #Python
文章标签 自定义

这篇文章主要为大家详细介绍了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>