Python 将焦点从一个文本小部件更改为另一个文本小部件
我是Python新手,我正在尝试使用Tkinter创建一个简单的GUI 在许多用户界面中,点击tab按钮通常会将焦点从一个文本小部件切换到另一个文本小部件。每当我在文本小部件中时,tab只缩进文本光标Python 将焦点从一个文本小部件更改为另一个文本小部件,python,tkinter,Python,Tkinter,我是Python新手,我正在尝试使用Tkinter创建一个简单的GUI 在许多用户界面中,点击tab按钮通常会将焦点从一个文本小部件切换到另一个文本小部件。每当我在文本小部件中时,tab只缩进文本光标 有人知道这是否是可配置的吗 焦点遍历在某种程度上是可自定义的,通常由X windows管理器处理(焦点跟随鼠标或单击)。根据需要,对于制表符按下,应该可以将事件转换为按键事件,并在这些情况下触发事件。使用Tkinter很容易做到这一点 要想让这一切顺利进行,必须要做几件事。首先,您需要确保标准行为
有人知道这是否是可配置的吗 焦点遍历在某种程度上是可自定义的,通常由X windows管理器处理(焦点跟随鼠标或单击)。根据需要,对于制表符按下,应该可以将事件转换为按键事件,并在这些情况下触发事件。使用Tkinter很容易做到这一点 要想让这一切顺利进行,必须要做几件事。首先,您需要确保标准行为不会发生。也就是说,您不希望tab同时插入一个选项卡并将焦点移动到下一个小部件。默认情况下,事件在标准行为发生之前由特定小部件处理(通常在类绑定中)。Tk有一个简单的内置机制来停止事件的进一步处理 其次,您需要确保将焦点发送到适当的小部件。内置支持确定下一个小部件是什么 例如:
def focus_next_window(event):
event.widget.tk_focusNext().focus()
return("break")
text_widget=Text(...)
text_widget.bind("<Tab>", focus_next_window)
def focus_next_窗口(事件):
event.widget.tk_focusNext().focus()
返回(“中断”)
text_widget=text(…)
text\u widget.bind(“,焦点\u下一个\u窗口)
有关此代码的要点:
- 方法
返回键盘遍历层次结构中的下一个小部件tk_focusNext()
- 方法
将焦点设置为该小部件focus()
- 返回
非常关键,因为它可以防止类绑定触发。正是这个类绑定插入了您不想要的制表符“break”
bind\u class()
方法而不是bind()
使此绑定影响所有文本小部件
您也可以将绑定发送焦点发送到一个非常特定的小部件,但我建议您坚持默认的遍历顺序,然后确保遍历顺序正确。在PyQt4中非常简单,只需使用下面这一行,您就可以通过按tab按钮更改焦点:
self.textEdit.setTabChangesFocus(True)我不明白;我建议他在接受的答案中写些什么,不是吗?你的答案太弱了,没有用处。我不认为焦点遍历是可定制的“由于跨平台性质”。跨平台与此无关。此外,你的回答是“这应该是可能的”。如果我在寻求帮助,而有人说“这应该是可能的”,我不觉得这很让人放心。要么是,要么不是。最后,“扫描制表符”毫无意义——没有办法“[扫描]制表符”,你也不会说怎么做。听起来你的答案是猜测,这让它没那么有用。我有一个几乎无关的问题,关于如何在不实际阻止执行其默认行为的情况下,为响应a而执行一些额外的步骤。这个回答完全掩盖了这一点。谢谢PyQt4解决方案对于使用Tkinter的人来说是无用的。