PySide GUI 的键盘导航
Posted
技术标签:
【中文标题】PySide GUI 的键盘导航【英文标题】:Keyboard navigation for PySide GUI 【发布时间】:2014-03-27 06:32:27 【问题描述】:我正在使用 PySide 进行应用程序开发。应用程序已准备就绪,但我只想使用键盘来使用它。简而言之,当我们按下“tab”键时,它会依次导航各种小部件并点击“enter”,就像“鼠标点击”一样。
如何做到这一点?
提前致谢。
【问题讨论】:
我以为 PySide 默认会这样?不是这样吗? 不。至少在我的情况下不是这样的。 @user2732017。以何种方式“不是那样”?您是否声称 Tab 键根本不会移动焦点? 实际上它正在使用一些小部件。但是当tab进入textedit小部件时,无法摆脱它。 【参考方案1】:某些小部件可以设置为将制表键解释为小部件的输入,而不是更改焦点的指令。其中之一是QTextEdit
,其中的制表键可以设置为在小部件的文本中输入制表符而不是更改焦点。
您可以通过为适当的QTextEdit
小部件设置my_text_edit.setTabChangesFocus(True)
来停止此行为。如果您使用 Qt Designer 来生成 UI,您也可以在 Qt Designer 中设置此行为。
见:http://qt-project.org/doc/qt-4.8/qtextedit.html#tabChangesFocus-prop
我想对于任何其他不将 Tab 键解释为更改焦点命令的小部件都有类似的方法调用。
【讨论】:
【参考方案2】:除了three_pineaples 的建议之外,如果您不想失去焦点抓取小部件(文本编辑器、表格)中的制表键功能,您始终可以使用带有特定键盘快捷键的标签来让用户将注意力从焦点抓取小部件:
name = QtGui.QLineEdit(self)
name_lbl = QtGui.QLabel('&Name:', self)
name_lbl.setBuddy(name)
让 Alt+n 将焦点放在“名称”小部件上,前提是 Alt+n 加速键在焦点窗口上是唯一的。
【讨论】:
以上是关于PySide GUI 的键盘导航的主要内容,如果未能解决你的问题,请参考以下文章
导航仿真基于matlab GUI PSINS导航仿真含Matlab源码 1496期