我正在用 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()方法中。
uj5u.com熱心網友回復:
您可以<Return>在Entry小部件上系結按鍵事件。然后在系結回呼中,按焦點順序獲取下一個小部件并將焦點.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()
uj5u.com熱心網友回復:
閱讀此答案系結 enter 到一個小部件以了解 <Return> 和 <Enter> 之間的區別
從那里,你可以構建類似的東西
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()
uj5u.com熱心網友回復:
@acw1668 這就是我所做的
entries_1 = [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 entries_1:
i.bind("<Return>", lambda e: e.widget.focusNext().focus_set())
我收到一條錯誤訊息:Entry物件沒有屬性“focusNext”
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371966.html
標籤:Python 蟒蛇-3.x 特金特 开发环境 tkinter-入口
上一篇:通過按鈕命令添加的標簽不擴展框架
