如何在PyQt中发送UI事件?

kar*_*ana 2 python user-interface pyqt4

我想在程序中自动执行UI操作:可以显示菜单,打开其他表单等。我在python应用程序中使用.py文件.ui。我怎样才能做到这一点?

ckh*_*han 6

几乎所有的GUI框架都具有事件的概念,该事件通常由用户操作(单击按钮,拖动窗口等)生成并发送给处理程序。

但是事件通常也可以直接发送到事件循环。就您而言,我假设您正在使用Digia的PyQt和Qt工具包。

PyQt文档QCoreApplication.sendEvent看起来像是一个很好的起点:

bool QCoreApplication.sendEvent (QObject receiver, QEvent event)

使用notify()函数将事件直接发送到接收者接收者。返回从事件处理程序返回的值。

发送事件后,不会删除该事件。通常的方法是在堆栈上创建事件,例如:

QMouseEvent event(QEvent.MouseButtonPress, pos, 0, 0, 0);
QApplication.sendEvent(mainWindow, &event);
Run Code Online (Sandbox Code Playgroud)

另请参见postEvent()和notify()。

不要忽略对postEvent和的关注notify

有关更多信息,请访问Digia的Qt文档中的postEvent。