如何为 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
方法。
【讨论】:
文档声称使用eventFilter
和 QApplication
可以捕获所有事件,但在我自己的测试中,我发现某些事件会被丢弃(例如,如果某些 other 事件过滤器首先将其删除)。我发现继承 QApplication 并覆盖 QApplication.notify()
是确保您在应用程序中获得所有事件的最佳方式。以上是关于如何为 PyQt 提供类似宏的录制功能的主要内容,如果未能解决你的问题,请参考以下文章