Python 如何确定哪个小部件发出信号
我想使QlineEdit字段可双击,以便用户双击QlineEdit字段(例如,“qle01”)调用函数。 函数应该能够通过“名称”识别向函数发送信号的QLineEdit对象 在下面的示例代码中,我不知道“name”是否是描述“qle01”和“qle02”的正确词语。也许更好的术语应该是“手柄” 在我下面的脚本中,如果双击qle01,我的目标是打印第9行,“QLineEdit字段的名称是‘qle01’”。我希望您能帮助我了解如何打印第9行“QLineEdit字段的名称是‘qle01’” Givng credit在信用到期的情况下,除了第9行的伪代码外,下面的其余代码取自StackOverflow过账中的示例1 关于如何将句柄或名称传递给插槽/函数,我有一些想法,但我没有得到任何有用的东西Python 如何确定哪个小部件发出信号,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我想使QlineEdit字段可双击,以便用户双击QlineEdit字段(例如,“qle01”)调用函数。 函数应该能够通过“名称”识别向函数发送信号的QLineEdit对象 在下面的示例代码中,我不知道“name”是否是描述“qle01”和“qle02”的正确词语。也许更好的术语应该是“手柄” 在我下面的脚本中,如果双击qle01,我的目标是打印第9行,“QLineEdit字段的名称是‘qle01’”。我希望您能帮助我了解如何打印第9行“QLineEdit字段的名称是‘qle01’” Givng
class ObjectName(object):
@QtCore.pyqtSlot()
def __getattribute__(self, name):
print "getting `{}`".format(str(name))
print('str(self.sender()) = ' + str(self.sender()))
因此,总而言之,我希望您能帮助我弄清楚如何使第9行打印“QLineEdit字段的名称为'qle01'。变量的名称不能识别对象,例如在以下代码中:
qle01=LineEdit()
foo_name=qle01
标识QLineEdit的变量的名称是什么?井qle01和foo_名称,因为它们都是内存空间的别名
可以做的是识别一个对象,即指向同一对象的所有变量都将具有相同的id
另一方面,最好实现一个信号来通知是否在QLineEdit中进行了双击,因为这将允许我们通过QObject的sender()方法获取对象
导入系统
从PyQt4导入QtCore、QtGui
类LineEdit(QtGui.QLineEdit):
双击=QtCore.pyqtSignal()
def mouseDoubleClickEvent(自身,事件):
self.doubleClicked.emit()
super(LineEdit,self).鼠标双击事件(event)
类小部件(QtGui.QWidget):
定义初始化(self,*args,**kwargs):
超级(小部件,自我)。\uuuuu初始化(*args,**kwargs)
self.qle01=LineEdit(双击=self.on\u双击)
self.qle02=LineEdit(双击=self.on\u双击)
lay=QtGui.QVBoxLayout(自)
lay.addWidget(self.qle01)
lay.addWidget(self.qle02)
@QtCore.pyqtSlot()
双击(自身)上的def:
如果self.sender()为self.qle01:
打印(“QLineEdit字段的名称为'qle01'。”)
elif self.sender()是self.qle02:
打印(“QLineEdit字段的名称为'qle02'。”)
如果名称=“\uuuuu main\uuuuuuuu”:
app=QtGui.QApplication(sys.argv)
w=Widget()
w、 show()
sys.exit(app.exec_())
非常感谢您!我有一个相关的问题,如果你有时间回答的话。在哪里可以找到sender()函数的技术参考?我在这个url下找不到它:我想找到技术参考,这样我就可以更多地了解如何使用sender()函数。@user235218 PyQt4的文档与Qt4的文档相似,因为它是一个包装器,所以请检查谢谢。在您的帮助下,我在以下位置找到了它:
class ObjectName(object):
@QtCore.pyqtSlot()
def __getattribute__(self, name):
print "getting `{}`".format(str(name))
print('str(self.sender()) = ' + str(self.sender()))