tkinter中有切换"Tab"和"Enter"按钮的功能吗?
Is there a function to switch "Tab" and "Enter" button in tkinter?
我正在使用 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()
方法放置的。
阅读此答案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()
您可以在 Entry
小部件上绑定 <Return>
按键事件。然后在绑定回调中,按 .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()
我正在使用 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()
方法放置的。
阅读此答案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()
您可以在 Entry
小部件上绑定 <Return>
按键事件。然后在绑定回调中,按 .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()