Python 如何通过点击qslider获得价值?

Python 如何通过点击qslider获得价值?,python,pyqt,qslider,Python,Pyqt,Qslider,所以我使用Pyqt来创建使用Python编程语言的GUI程序。我试图在点击Qslider时获得它的值,但我不明白如何 self.slide.mouseDoubleClickEvent= lambda event: self.slideclicked() 单击幻灯片时,我就是这样声明方法的,方法如下: def slideclicked(self): print(self.slide.value()) 我希望得到鼠标单击的位置的值,但我只是得到Qslider的当前值。一个可能

所以我使用Pyqt来创建使用Python编程语言的GUI程序。我试图在点击Qslider时获得它的值,但我不明白如何

self.slide.mouseDoubleClickEvent= lambda event: self.slideclicked()
单击幻灯片时,我就是这样声明方法的,方法如下:

    def slideclicked(self):
      print(self.slide.value())

我希望得到鼠标单击的位置的值,但我只是得到Qslider的当前值。

一个可能的解决方案是覆盖mouseDoubleClickEvent方法并创建一个发送该信息的信号:

class Slider(QSlider):
    pointClicked = pyqtSignal(QPoint)
    def mouseDoubleClickEvent(self, event):
        self.pointClicked.emit(event.pos())

class Widget(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        self.setLayout(QVBoxLayout())
        self.slider = Slider()
        self.layout().addWidget(self.slider)
        self.slider.pointClicked.connect(lambda p: print(p.x(), p.y()))
如果无法覆盖该方法,则可以使用eventFilter:


是否要获取位置x,以及单击的位置?
class ClickedHelper(QObject):
    pointClicked = pyqtSignal(QPoint)
    def __init__(self, widget, *args, **kwargs):
        QObject.__init__(self, parent=widget)
        self.obj = widget
        self.obj.installEventFilter(self)

    def eventFilter(self, obj, event):
        if obj == self.obj and event.type() == QEvent.MouseButtonDblClick:
                self.pointClicked.emit(event.pos())
        return QObject.eventFilter(self, obj, event)

class Widget(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        self.setLayout(QVBoxLayout())
        self.slider = QSlider()
        self.layout().addWidget(self.slider)
        helper = ClickedHelper(self.slider)
        helper.pointClicked.connect(lambda p: print(p.x(), p.y()))