访问 PyQt5 组件的内置快捷方式?
Posted
技术标签:
【中文标题】访问 PyQt5 组件的内置快捷方式?【英文标题】:Access the built-in shortcuts of PyQt5 components? 【发布时间】:2021-02-17 12:52:23 【问题描述】:我非常渴望能够使用键盘通过 GUI 完成所有操作,目前正在探索 QTreeView
和 QTableView
等。
我正在添加很多我自己的热键(快捷方式),并且正在设计一种方法来自动化用户列表或这些可用热键的指南。
但是像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 中,通过探索InputMap
s 和 ActionMap
s(与 Swing 组件类相关联)之类的东西,这确实被证明是可能的,尽管并不容易。在 JavaFX 中,我无法访问:***.com/questions/42713630/…。我已经找到keyPressEvent
...我会看看是否有办法监视默认实现...以上是关于访问 PyQt5 组件的内置快捷方式?的主要内容,如果未能解决你的问题,请参考以下文章
Win10 使用快捷方式启动 Python PyQt5 应用程序