是否有在 tkinter 中切换“Tab”和“Enter”按钮的功能?

Posted

技术标签:

【中文标题】是否有在 tkinter 中切换“Tab”和“Enter”按钮的功能?【英文标题】:Is there a function to switch "Tab" and "Enter" button in tkinter? 【发布时间】:2022-01-08 12:02:48 【问题描述】:

我正在用 Tkinter 创建一个带有很多 Entry 小部件的 Gui。但是,我不喜欢单击 Tab 按钮从一个条目转到另一个条目的事实。我希望它是执行此操作的 Enter 键。有没有实现它的功能?这是所有条目的列表:

```python
entries = [self.entMath1, self.entMath2, self.entFran1, 
           self.entFran2, self.entSvt1, self.entSvt2, self.entEps1, 
           self.entEps2, self.entHg1, self.entHg2, self.entPc1, 
           self.entPc2, self.entAng1, self.entAng2, self.entPhi1, 
           self.entPhi2, self.entM1, self.entM2, self.entM3, 
           self.entM4]
for i in range(len(entries_1) - 1):
    entries_1[i].bind("<Return>", lambda e: entries_1[i].focus_set())
```

所有这些条目都使用place() 方法放置。

【问题讨论】:

当然,您可以使用绑定来使几乎任何键执行您想要的任何操作。您应该阅读bind 方法。 是的,我正在使用bind 方法。但我不确定能否发挥作用 您应该提供一个minimal reproducible example,显示您尝试过的内容。 我编辑了我的帖子。你可以看看。 见***.com/q/17677649/7432 【参考方案1】:

您可以在Entry 小部件上绑定&lt;Return&gt; 键事件。然后在绑定回调中,通过.tk_focusNext()获取焦点顺序中的下一个小部件,并将焦点移到这个小部件上:

import tkinter as tk

root = tk.Tk()

for i in range(10):
    e = tk.Entry(root)
    e.grid(row=0, column=i)
    e.bind('<Return>', lambda e: e.widget.tk_focusNext().focus_set())

root.mainloop()

【讨论】:

当我这样做时,它直接进入最后一个条目。所有条目不是​​同时创建的,而是一个一个地创建,并使用place() 方法放置。 它对我来说很好用。您是否完全复制了示例? @OusmaneNgom 复制相同的代码有点困难,因为我以不同的方式创建了条目小部件。但是,当我写最后一行时,它说:'Entry' 对象没有属性'focusNext'。 @OusmaneNgom:函数名为tk_focusNext,而不是focusNext 哦,我明白了。它现在有效!非常感谢【参考方案2】:

阅读此答案binding enter to a widget,了解

之间的区别

由此,您可以构建类似的东西

import tkinter as tk
top = tk.Tk()
frm = tk.Frame(top)
frm.pack()

# List of entries
seq = [None]
next = []
entmax = 5
for ii in range(entmax):
    ent = tk.Entry(frm)
    ent.pack(side=tk.LEFT, padx=5, pady=5)
    seq.append(ent)
    next.append(ent)

# Now set the entries to move to the next field
for ix in range(1, entmax, 1):
    seq[ix].bind('<Return>', lambda e: next[ix].focus_set())

top.mainloop()

【讨论】:

你在列表上做了for循环吗?我无法让它工作,这就是为什么我有 2 个列表。 @acw1668 可能是一个更好的解决方案。 我编辑了我的帖子。您可以查看我添加的代码。我使用place() 方法来放置它们(请原谅我的英语不好,我不是本地人!!) 你能发布绑定和focus_set代码 我再次编辑了帖子。看看吧。

以上是关于是否有在 tkinter 中切换“Tab”和“Enter”按钮的功能?的主要内容,如果未能解决你的问题,请参考以下文章

前端tab切换 和 validatejs表单验证插件

tkinter - 使用按钮在帧之间来回切换

JS实现下拉框切换和tab标签切换

jquery 实现tab切换

Tab切换

tab切换 js制作 index和this的应用