Python 如何通过点击qslider获得价值?
所以我使用Pyqt来创建使用Python编程语言的GUI程序。我试图在点击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的当前值。一个可能
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()))