在PyQt中模拟鼠标单击事件

在PyQt中模拟鼠标单击事件,qt,pyqt,Qt,Pyqt,我试图在ui.goButton小部件上用Python模拟鼠标单击事件 以下是我所做的: QtTest.QTest.mouseClick(self.ui.goButton, QtCore.Qt.LeftButton) 这样做对吗?因为它不起作用。根据您对评论的回复,我将回答您的问题 基本上,信号可以通过 因此,如果要发出QPushButton的clicked()信号 您必须继承QPushButton,并且可以发出类似emit clicked()的信号 将帮助你发出信号 但我的问题是你为什么要这么

我试图在
ui.goButton
小部件上用Python模拟鼠标单击事件

以下是我所做的:

QtTest.QTest.mouseClick(self.ui.goButton, QtCore.Qt.LeftButton)

这样做对吗?因为它不起作用。

根据您对评论的回复,我将回答您的问题

基本上,信号可以通过

因此,如果要发出
QPushButton
clicked()
信号

您必须继承
QPushButton
,并且可以发出类似
emit clicked()
的信号

将帮助你发出信号

但我的问题是你为什么要这么做?

通过发出
clicked()
信号,您将依次调用
connect
ed插槽。。那么,你为什么不能自己直接呼叫插槽,而不是发出信号然后呼叫插槽呢

请记住
插槽
只是普通函数
,可以像调用其他函数一样调用

或者,如果插槽存在于您将通过信号连接的另一个对象中,则发出您自己的信号,而不是与预定义的信号混淆

总之,即使在较短的时间内也不会发出这种预定义的信号

希望能有帮助

编辑:


哎呀,我没看到PyQt。我习惯了C++的QT。我对Python一无所知。但我相信Qt的大多数概念仍然很常见。因此,我将保留我的答案。

我认为我不明白你所说的
模拟
是什么意思?您是要处理鼠标单击事件还是要生成鼠标单击事件?@liaK:我要生成鼠标单击事件,也就是说,我要向按钮发送
信号(“clicked()”)
,在用户没有点击的情况下。你是在测试还是不想让你的应用程序真的那样工作?@rebus:我真的想那样工作。。。这可能是一个糟糕的设计,但我现在必须接受它并完成它。虽然这可能是回答中特定问题的正确答案,但我需要模拟一个真实的鼠标点击事件,以便我可以在QStyledItemDelegate中将点击传递给鼠标下的小部件。我在研究这个问题时遇到了这个问题。我同意答案,但我认为我的需求仍然是一个有效的用户故事。在IMO的回答中添加这一点是值得的。它可能与使用构造的事件实例执行MousePresseEvent一样简单,但我还不确定。。。。
emit signalToBeEmitted()