如何为 PyQt 提供类似宏的录制功能

Posted

技术标签:

【中文标题】如何为 PyQt 提供类似宏的录制功能【英文标题】:How can I have a Macro like recording feature for PyQt 【发布时间】:2013-09-14 05:23:51 【问题描述】:

我有一个 Qt tablewidget 和与之相邻的其他 Qt 小部件。我正在寻找一个自动脚本生成器,它记录我将在表或其他 Qt 小部件上执行的所有操作。我也曾与 Enthought 合作过,他们有一个很棒的 apptool enthought.scripting 可以帮助我,但仅适用于特征对象。我想在 PyQt 小部件上做同样的事情,但不知道怎么做。

【问题讨论】:

【参考方案1】:

这是看起来很自然的想法之一,它让你想知道为什么还没有一个图书馆可以做到这一点。

好吧,事实证明,编写能够获得 80% 解决方案的内容非常简单,尤其是在您的应用很小的情况下。但是实现一个记录/播放系统,它适用于具有多种小部件的大型应用程序是相当痛苦的。

我写了一个库来尽力解决这个问题。里面全是hack,代码还很不成熟(我今天刚把repo推到了github上),但你可能会有一些想法。哎呀,如果你幸运的话,你甚至可以在不做任何改变的情况下使用它:

https://github.com/stuarteberg/eventcapture

还没有文档。我计划解释所有让这个工作的技巧,并可能稍微清理一下代码。现在,您至少可以按照自述文件中的说明尝试演示。

【讨论】:

【参考方案2】:

您可以使用 QApplication 实例中的 eventFilter 方法。

【讨论】:

文档声称使用 eventFilterQApplication 可以捕获所有事件,但在我自己的测试中,我发现某些事件会被丢弃(例如,如果某些 other 事件过滤器首先将其删除)。我发现继承 QApplication 并覆盖 QApplication.notify() 是确保您在应用程序中获得所有事件的最佳方式。

以上是关于如何为 PyQt 提供类似宏的录制功能的主要内容,如果未能解决你的问题,请参考以下文章

如何为 pyqt 项目创建 Windows 安装程序

无法使用 ktrain 模型预测前端流光,请提供有关如何为预测功能提供输入的建议

如何为反应表 7 提供自定义排序功能?

如何为 Spring Boot 启动器拆分库中的代码

如何为可编码对象提供自定义代码功能

如何为我的 CollectionView 单元格提供 onclick 功能?