python - Pyqt5:RangeSlider 对象
问题描述
我正在寻找将 RangeSlider 集成到我的 GUI 中(pyqt5 python) 与这张图片相同:
我只搜索一个简单的例子。
我发现了不同的例子: https ://doc.qt.io/qt-5/qml-qtquick-controls2-rangeslider.html但它是一个 QML
解决方案
我认为这是您想要的示例。
我刚刚修改了下面的链接示例。
# slide Bar Range example.
# max min interval + date example.
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
MAXVAL = 650000
class RangeSliderClass(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.minTime = 0
self.maxTime = 0
self.minRangeTime = 0
self.maxRangeTime = 0
self.sliderMin = MAXVAL
self.sliderMax = MAXVAL
self.setupUi(self)
def setupUi(self, RangeSlider):
RangeSlider.setObjectName("RangeSlider")
RangeSlider.resize(1000, 65)
RangeSlider.setMaximumSize(QtCore.QSize(16777215, 65))
self.RangeBarVLayout = QtWidgets.QVBoxLayout(RangeSlider)
self.RangeBarVLayout.setContentsMargins(5, 0, 5, 0)
self.RangeBarVLayout.setSpacing(0)
self.RangeBarVLayout.setObjectName("RangeBarVLayout")
self.slidersFrame = QtWidgets.QFrame(RangeSlider)
self.slidersFrame.setMaximumSize(QtCore.QSize(16777215, 25))
self.slidersFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.slidersFrame.setFrameShadow(QtWidgets.QFrame.Raised)
self.slidersFrame.setObjectName("slidersFrame")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.slidersFrame)
self.horizontalLayout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
self.horizontalLayout.setContentsMargins(5, 2, 5, 2)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setObjectName("horizontalLayout")
## Start Slider Widget
self.startSlider = QtWidgets.QSlider(self.slidersFrame)
self.startSlider.setMaximum(self.sliderMin)
self.startSlider.setMinimumSize(QtCore.QSize(100, 5))
self.startSlider.setMaximumSize(QtCore.QSize(16777215, 10))
font = QtGui.QFont()
font.setKerning(True)
self.startSlider.setFont(font)
self.startSlider.setAcceptDrops(False)
self.startSlider.setAutoFillBackground(False)
self.startSlider.setOrientation(QtCore.Qt.Horizontal)
self.startSlider.setInvertedAppearance(True)
self.startSlider.setObjectName("startSlider")
self.startSlider.setValue(MAXVAL)
self.startSlider.valueChanged.connect(self.handleStartSliderValueChange)
self.horizontalLayout.addWidget(self.startSlider)
## End Slider Widget
self.endSlider = QtWidgets.QSlider(self.slidersFrame)
self.endSlider.setMaximum(MAXVAL)
self.endSlider.setMinimumSize(QtCore.QSize(100, 5))
self.endSlider.setMaximumSize(QtCore.QSize(16777215, 10))
self.endSlider.setTracking(True)
self.endSlider.setOrientation(QtCore.Qt.Horizontal)
self.endSlider.setObjectName("endSlider")
self.endSlider.setValue(self.sliderMax)
self.endSlider.valueChanged.connect(self.handleEndSliderValueChange)
#self.endSlider.sliderReleased.connect(self.handleEndSliderValueChange)
self.horizontalLayout.addWidget(self.endSlider)
self.RangeBarVLayout.addWidget(self.slidersFrame)
#self.retranslateUi(RangeSlider)
QtCore.QMetaObject.connectSlotsByName(RangeSlider)
self.show()
@QtCore.pyqtSlot(int)
def handleStartSliderValueChange(self, value):
self.startSlider.setValue(value)
@QtCore.pyqtSlot(int)
def handleEndSliderValueChange(self, value):
self.endSlider.setValue(value)
app = QtWidgets.QApplication(sys.argv)
awindow = RangeSliderClass()
sys.exit(app.exec_())
运行此代码。
推荐阅读
- r - 根据 R 中的条件将数据表从列转置为行
- javascript - 在动态输入字段中编辑/更新相关下拉菜单
- react-native - 如何获得 Xaxis 宽度 react-native-svg-charts
- actions-on-google - Webhook 响应上的 Google 操作提示链接 URL 未按预期工作
- mysql - mysql是否可以将字符串与int进行比较?
- python - 致命错误,无法执行脚本 xyz
- c - C三角查找表比math.h的函数慢?
- android - Kotlin/Room/Android 错误:在查询可以有空字段的嵌套对象时出错
- sql-server - 如何使用 Pyspark 加快从 Spark 数据帧写入 SQL Server 的速度?
- reactjs - 在 React Chrome 扩展中实现 Google Analytics