访问 PyQt5 组件的内置快捷方式?

Posted

技术标签:

【中文标题】访问 PyQt5 组件的内置快捷方式?【英文标题】:Access the built-in shortcuts of PyQt5 components? 【发布时间】:2021-02-17 12:52:23 【问题描述】:

我非常渴望能够使用键盘通过 GUI 完成所有操作,目前正在探索 QTreeViewQTableView 等。

我正在添加很多我自己的热键(快捷方式),并且正在设计一种方法来自动化用户列表或这些可用热键的指南。

但是像QTreeView 这样的东西也带有自己的内置热键,例如用于导航的箭头键、用于开始编辑的 F2、用于“全选”的 Ctrl-A 等。我想获得这些的完整列表并将它们包含在自动生成的用户指南中。

例如,我必须到 this page,但我真的不知道如何深入研究 PyQt5 组件以编程方式挖掘此类信息。

有一些有趣的功能,可能很多用户都不知道,QTreeView:例如如果在第 0 列中,您有一个树结构,则可以通过按每个标签的第一个字母从标签(文本)跳到标签。但是,如果您足够快地输入 2 个(或更多)键,这也可以:即使“Roma”和“Rimini”先出现,输入“ra”也会跳过“Roma”和“Rimini”到“Ravenna”。事实证明,这是由QTreeView.keyboardSearch 实现的......但我想知道的是,是否有可能找到这个和其他键盘启用的“映射”功能的详细信息,通常由keyPressEvent 以编程方式实现。看了一点 PyQt5 文件,似乎很多 PyQt5 功能最终可能包含在 .dll 文件中(这是一台 W10 机器),所以我并不是特别乐观。

【问题讨论】:

【参考方案1】:

每个小部件都有特定的行为,具体取决于按下的热键,因此没有说明所有情况的文档,因此您必须查看每个类和父类的文档。因此,例如要了解 QTableView 的行为,您还应该查看 QAbstractItemView、QAbstractScrollArea 和 QFrame 的文档(QTreeView 也是如此),考虑到以上我们可以收集信息:

void QAbstractScrollArea::keyPressEvent(QKeyEvent *e) 当按键发生时,此函数与按键事件 e 一起调用。它 处理 PageUp、PageDown、Up、Down、Left 和 Right,并忽略所有 其他按键。

QAbstractItemView:

void QAbstractItemView::keyPressEvent(QKeyEvent *event).

发送按键事件时,使用给定事件调用此函数 到小部件。默认实现处理基本光标 运动,例如上、下、左、右、主页、PageUp 和 PageDown;这 如果当前索引有效并且 按下激活键(例如 Enter 或 Return,取决于 平台)。 此功能是通过按键启动编辑的地方, 例如如果按下 F2。

(强调我的)

QTableView 和 QTreeView 从 QAbstractItemView 继承时具有相同的热键。

【讨论】:

谢谢。我正在寻找的不是文档,而是一种以编程方式访问热键信息的方式。在 Java Swing 中,通过探索 InputMaps 和 ActionMaps(与 Swing 组件类相关联)之类的东西,这确实被证明是可能的,尽管并不容易。在 JavaFX 中,我无法访问:***.com/questions/42713630/…。我已经找到keyPressEvent ...我会看看是否有办法监视默认实现...

以上是关于访问 PyQt5 组件的内置快捷方式?的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 在打开的菜单中使用快捷方式

快捷方式管理(pyqt5升级版) python pytq5

Win10 使用快捷方式启动 Python PyQt5 应用程序

Chrome 开发者工具(DevTools)中所有快捷方式列表(已整理)

Ubuntu20.04使用内置的截图

电脑上为啥会出现此快捷方式引用的项目无法访问,您可能没有适当的权限?