Python 将参数传递给QWidget.mousePressEvent
我正在覆盖QWidget.mousePressEvent,如下所示:Python 将参数传递给QWidget.mousePressEvent,python,qt,pyqt,Python,Qt,Pyqt,我正在覆盖QWidget.mousePressEvent,如下所示: widget = QtWidgets.QWidget() widget.mousePressEvent = my_function def my_function(QMouseEvent): print('Mouse Pressed') for index in range(10): widget = QtWidgets.QWidget() widget.mousePressEvent = my_f
widget = QtWidgets.QWidget()
widget.mousePressEvent = my_function
def my_function(QMouseEvent):
print('Mouse Pressed')
for index in range(10):
widget = QtWidgets.QWidget()
widget.mousePressEvent = my_function(index)
def my_function(QMouseEvent, index):
print(index)
但我的问题是,我现在如何传递一个变量?我需要这样的东西:
widget = QtWidgets.QWidget()
widget.mousePressEvent = my_function
def my_function(QMouseEvent):
print('Mouse Pressed')
for index in range(10):
widget = QtWidgets.QWidget()
widget.mousePressEvent = my_function(index)
def my_function(QMouseEvent, index):
print(index)
使用
functools.partial
从functools导入部分
def my_函数(索引、QMouseEvent):
打印(索引)
对于范围(10)中的索引:
widget=qtwidts.QWidget()
widget.mousePressEvent=partial(my_函数,索引)
或者使用lambda
widget.mousePressEvent=lambda:event,index=index:my_函数(index,event)
请注意,用于按值捕获索引的可选lambda参数。使用
functools.partial
从functools导入部分
def my_函数(索引、QMouseEvent):
打印(索引)
对于范围(10)中的索引:
widget=qtwidts.QWidget()
widget.mousePressEvent=partial(my_函数,索引)
或者使用lambda
widget.mousePressEvent=lambda:event,index=index:my_函数(index,event)
请注意,用于按值捕获索引的可选lambda参数