Python PyQt5滚动在使用水平滑块时失败

Python PyQt5滚动在使用水平滑块时失败,python,scroll,pyqt5,Python,Scroll,Pyqt5,尝试滚动主窗口,然后有时滚动停止,而不是窗口滚动,此时会出现QSlider Descented 如何修复此问题?当鼠标悬停在QSlider上时发生滚动时,QSlider会收到wheelEvent。您可以为每个QSlider调用qwheeleevent.ignore(),以便事件将传播到父级以处理滚动 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'scroll_error.ui' # #

尝试滚动主窗口,然后有时滚动停止,而不是窗口滚动,此时会出现QSlider Descented


如何修复此问题?

当鼠标悬停在QSlider上时发生滚动时,QSlider会收到
wheelEvent
。您可以为每个QSlider调用
qwheeleevent.ignore()
,以便事件将传播到父级以处理滚动

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'scroll_error.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 109)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 763, 516))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.horizontalSlider = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider.setSliderPosition(50)
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.setObjectName("horizontalSlider")
        self.gridLayout_2.addWidget(self.horizontalSlider, 0, 0, 1, 1)
        self.horizontalSlider_2 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_2.setSliderPosition(50)
        self.horizontalSlider_2.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_2.setObjectName("horizontalSlider_2")
        self.gridLayout_2.addWidget(self.horizontalSlider_2, 1, 0, 1, 1)
        self.horizontalSlider_3 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_3.setSliderPosition(50)
        self.horizontalSlider_3.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_3.setObjectName("horizontalSlider_3")
        self.gridLayout_2.addWidget(self.horizontalSlider_3, 2, 0, 1, 1)
        self.horizontalSlider_4 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_4.setSliderPosition(50)
        self.horizontalSlider_4.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_4.setObjectName("horizontalSlider_4")
        self.gridLayout_2.addWidget(self.horizontalSlider_4, 3, 0, 1, 1)
        self.horizontalSlider_5 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_5.setSliderPosition(50)
        self.horizontalSlider_5.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_5.setObjectName("horizontalSlider_5")
        self.gridLayout_2.addWidget(self.horizontalSlider_5, 4, 0, 1, 1)
        self.horizontalSlider_6 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_6.setSliderPosition(50)
        self.horizontalSlider_6.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_6.setObjectName("horizontalSlider_6")
        self.gridLayout_2.addWidget(self.horizontalSlider_6, 5, 0, 1, 1)
        self.horizontalSlider_8 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_8.setSliderPosition(50)
        self.horizontalSlider_8.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_8.setObjectName("horizontalSlider_8")
        self.gridLayout_2.addWidget(self.horizontalSlider_8, 6, 0, 1, 1)
        self.horizontalSlider_11 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_11.setSliderPosition(50)
        self.horizontalSlider_11.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_11.setObjectName("horizontalSlider_11")
        self.gridLayout_2.addWidget(self.horizontalSlider_11, 7, 0, 1, 1)
        self.horizontalSlider_10 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_10.setSliderPosition(50)
        self.horizontalSlider_10.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_10.setObjectName("horizontalSlider_10")
        self.gridLayout_2.addWidget(self.horizontalSlider_10, 8, 0, 1, 1)
        self.horizontalSlider_9 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_9.setSliderPosition(50)
        self.horizontalSlider_9.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_9.setObjectName("horizontalSlider_9")
        self.gridLayout_2.addWidget(self.horizontalSlider_9, 9, 0, 1, 1)
        self.horizontalSlider_12 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_12.setSliderPosition(50)
        self.horizontalSlider_12.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_12.setObjectName("horizontalSlider_12")
        self.gridLayout_2.addWidget(self.horizontalSlider_12, 10, 0, 1, 1)
        self.horizontalSlider_7 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_7.setSliderPosition(50)
        self.horizontalSlider_7.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_7.setObjectName("horizontalSlider_7")
        self.gridLayout_2.addWidget(self.horizontalSlider_7, 11, 0, 1, 1)
        self.horizontalSlider_14 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_14.setSliderPosition(50)
        self.horizontalSlider_14.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_14.setObjectName("horizontalSlider_14")
        self.gridLayout_2.addWidget(self.horizontalSlider_14, 12, 0, 1, 1)
        self.horizontalSlider_17 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_17.setSliderPosition(50)
        self.horizontalSlider_17.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_17.setObjectName("horizontalSlider_17")
        self.gridLayout_2.addWidget(self.horizontalSlider_17, 13, 0, 1, 1)
        self.horizontalSlider_16 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_16.setSliderPosition(50)
        self.horizontalSlider_16.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_16.setObjectName("horizontalSlider_16")
        self.gridLayout_2.addWidget(self.horizontalSlider_16, 14, 0, 1, 1)
        self.horizontalSlider_15 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_15.setSliderPosition(50)
        self.horizontalSlider_15.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_15.setObjectName("horizontalSlider_15")
        self.gridLayout_2.addWidget(self.horizontalSlider_15, 15, 0, 1, 1)
        self.horizontalSlider_18 = QtWidgets.QSlider(self.scrollAreaWidgetContents)
        self.horizontalSlider_18.setSliderPosition(50)
        self.horizontalSlider_18.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_18.setObjectName("horizontalSlider_18")
        self.gridLayout_2.addWidget(self.horizontalSlider_18, 16, 0, 1, 1)
        self.horizontalSlider_13 = QtWidgets.QSlider(self.scrollAreaWidgetContents)




        self.horizontalSlider_13.setSliderPosition(50)
        self.horizontalSlider_13.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_13.setObjectName("horizontalSlider_13")
        self.gridLayout_2.addWidget(self.horizontalSlider_13, 17, 0, 1, 1)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.gridLayout.addWidget(self.scrollArea, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
for slider in MainWindow.findChildren(QtWidgets.QSlider):
    slider.wheelEvent = lambda event: event.ignore()