在 PyQt 中模拟鼠标点击事件

发布于 2024-09-13 20:17:55 字数 194 浏览 3 评论 0原文

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

这就是我所做的:

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

这是正确的方法吗?因为它不起作用。

I am trying to simulate a mouse click event in Python on the ui.goButton widget.

Here is what I did:

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

Is this the right way to do it? Cause it is not working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乖乖兔^ω^ 2024-09-20 20:17:55

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

基本上信号可以通过以下方式发出

emit signalToBeEmitted()

因此,如果您想发出QPushButtonclicked()信号,

您必须继承< code>QPushButton 并且您可以发出信号,例如emit clicked()

此示例将帮助您发出信号。

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

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

记住只是普通函数

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

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

希望它有帮助..

编辑:

哎呀我没有看到 PyQt。我习惯了 Qt 和 C++。我对Python一无所知。但我相信 Qt 的大部分概念仍将是通用的。所以我会留下我的答案..

Based on your reply to the comment, I will answer your question.

Basically signals can be emitted by,

emit signalToBeEmitted()

So, if you want to emit the QPushButton's clicked() signal,

you have to inherit the QPushButton and you can emit the signal like emit clicked().

This example will help you in emitting the signals.

But my question is why you want to do that?

By emitting the clicked() signal, you will in turn call the connected slot.. So why can't you call the slot directly by yourself instead of emitting the signal and then calling the slot..

Remember slots are just ordinary functions which can be called just like other functions.

Or else, if the slot present in another object which you will connect through the signal, then emit your own signal instead of messing up with the pre-defined ones.

IMHO, Don't emit such pre-defined signals even for the shorter term..

Hope it helps..

Edit:

Oops I didn't see the PyQt. I am used to Qt with C++. I know nothing about Python. But I believe most of the concepts of Qt will remain common. So I will leave my answer as such..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文