当前位置: 首页 > 面试题库 >

将焦点从一个文本小部件更改为另一个

谭志用
2023-03-14
问题内容

我是Python的新手,正在尝试使用Tkinter创建一个简单的GUI。

因此,在许多用户界面中,单击选项卡按钮通常会将焦点从一个Text小部件更改为另一个。每当我在“文本”小部件中时,选项卡只会缩进文本光标。

有人知道这是否可配置吗?


问题答案:

使用Tkinter可以很容易地做到这一点。

要使此工作生效,必须完成几件事。首先,您需要确保标准行为 不会
发生。也就是说,您不希望标签页同时插入标签页并将焦点移至下一个小部件。默认情况下,事件是在发生标准行为之前(通常在类绑定中)由特定的窗口小部件处理的。Tk具有简单的内置机制,可停止事件的进一步处理。

其次,您需要确保将焦点发送到适当的小部件。内置支持确定下一个窗口小部件是什么。

例如:

def focus_next_window(event):
    event.widget.tk_focusNext().focus()
    return("break")

text_widget=Text(...)
text_widget.bind("<Tab>", focus_next_window)

关于此代码的重点:

  • 该方法tk_focusNext()返回键盘遍历层次结构中的下一个窗口小部件。
  • 该方法focus()将焦点设置到该小部件
  • 返回"break"是至关重要的,因为它可以防止触发类绑定。正是这种类绑定插入了不需要的制表符。

如果您希望应用程序中的所有文本小部件都具有此行为,则可以使用bind_class()方法代替bind()使该绑定影响所有文本小部件。

您也可以使绑定将焦点发送到非常特定的小部件,但我建议坚持使用默认的遍历顺序,然后确保遍历顺序正确。



 类似资料:
  • 问题内容: 因此,我一直在试图弄清楚这一点,却无法弄清楚如何做到这一点。我希望另一个类中的按钮之一可以更改GUI类中JLabel的文本。 这是来自GUI类的代码:`import java.awt.Container; 这里是尝试更改JLabel“错误”的按钮中的代码: 问题答案: 首先,添加具有访问权限的吸气剂,以便您的第二堂课可以访问该字段。就像是, 或(如@MadProgrammer在评论中建

  • 问题内容: JTable的默认行为是将焦点更改为下一个单元格,我想在按TAB键时强制其将焦点移至下一个组件(例如JTextField)。 我重写的方法始终返回false: 但这仍然不会改变对下一个组件的关注! 我应该如何将重点放在下一个组件而不是下一个单元格上? 问题答案: 如果确实要这样做,则需要更改表操作映射的默认行为。 然后,您需要执行一些操作来处理遍历 另一种方法是禁用底层… (尚未测试)

  • 问题内容: 好的… 我已经搜索并寻找了可以直接回答我的问题的答案,但是没有成功。我的问题很简单,老实说,我想在那里会有一个更直接的答案。请记住,我还是该语言的新手,并且仍在学习中。 _因此,我将使用和作为我的两个文件,以及作为示例变量。_变量包含在中。如何将变量导入, 然后通过更改为另一个值, 然后 使用新值更新变量? 我不确定这是否可能,但我想一定会这样。我正在使用python 2.7.11,谢

  • 嗨,我有一个对象,它正在使用一个组件中的可观察到的东西从api更新,我想捕获同一对象对另一个组件的更改。这两个组件都是两个选项卡。最初是根据路由更新数据。以下是正在更新的数据: 我在这里捕获数据: 在中,数据最初是从路由获取的。考虑到上述情况,我有两个问题: 如果应用程序有多个组件,我想我必须在每个组件中事件,这将是一个很好的做法。请提出任何替代方法? 由于数据来自服务器,为什么不从中的获取更新的

  • 我有两个小部件。一旦用户完成了第一个文本字段,我将关注下一个。在Flutter里有办法做到这一点吗?目前,完成按钮只关闭键盘。我猜测类可能是解决这个问题的答案,但不确定它是如何工作的,有人有focusNode类的好例子吗?提前谢了。

  • 问题内容: 我有一个带有汉字文本的文件,我想将这些文本复制到另一个文件中。但是文件输出混乱了中文字符。注意,在我的代码中,我已经在使用“ UTF8”作为编码了: 问题答案: 在这种情况下,请勿使用FileReader,因为它不允许您指定输入编码。在FileInputStream上构造一个InputStreamReader。 像这样: