【问题标题】:Simulating a mouse click event in PyQt在 PyQt 中模拟鼠标点击事件
【发布时间】:2017-01-20 01:36:48
【问题描述】:

我正在尝试在 Python 中模拟 ui.goButton 小部件上的鼠标单击事件。

这是我所做的:

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

这是正确的做法吗?因为它不工作。

【问题讨论】:

  • 我想我不明白你所说的simulate 是什么意思?是要处理鼠标点击事件还是要生成鼠标点击事件?
  • @liaK:我想生成一个鼠标点击事件,也就是说,我希望按钮被发送SIGNAL("clicked()"),而不是用户实际点击它。
  • 您是在测试还是不想让您的应用真正以这种方式工作?
  • @rebus:我真的想这样工作......这可能是糟糕的设计,但我现在必须暂时接受它并完成它。

标签: qt pyqt


【解决方案1】:

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

信号基本上可以由发射

emit signalToBeEmitted()

所以,如果你想发出QPushButtonclicked()信号,

你必须继承QPushButton,并且你可以发出emit clicked()这样的信号。

This example 将帮助您发出信号。

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

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

记住slots只是普通函数,可以像其他函数一样调用。

否则,如果插槽存在于您将通过信号连接的另一个对象中,则发出您自己的信号,而不是弄乱预定义的信号。

恕我直言,即使在短期内也不要发出这种预定义的信号..

希望对你有帮助..

编辑:

糟糕,我没有看到 PyQt。我习惯于使用 C++ 进行 Qt。我对 Python 一无所知。但我相信 Qt 的大部分概念将保持通用。所以我会留下我的答案..

【讨论】:

  • 虽然这可能是回复中特定问题的正确答案,但我需要模拟真正的鼠标单击事件,以便可以将单击传递给 QStyledItemDelegate 中鼠标下的小部件。我在调查时遇到了这个问题。我同意这个答案,但我认为我的需求仍然是一个有效的用户故事。值得将此添加到此答案 IMO 中。它可能就像使用构造的事件实例执行 mousePressEvent 一样简单,但我还不确定......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多