使用 Tkinter 文本获取 Tab 键以转到下一个字段(而不是缩进)

Pyt*_*yte 3 python tabs text tkinter

我已经搜索并花了大约两个小时试图自己解决这个问题,但我的努力失败了。我的目标是在文本框中键入一条消息,按 Tab 键转到电子邮件按钮,然后按 Enter 发送电子邮件。

现在,在文本字段中按 Tab 键会创建字处理器样式的缩进,而不是移动到下一个字段。

代码的相关部分是这样的:

from tkinter import *

#Build Window

def focus():
    b.focus_set()

window = Tk()
window.title("What's Your Message?")
window.configure(background="black")
Label (window, text="Type Your Message:\n", bg="Black", fg="white", font="none 25 bold").pack(anchor=N)

e = Text(window, width=75, height=10)
e.pack()
e.focus_set()
e.bind("<Tab>", lambda e: focus())

b = Button(window, text="Send Email", takefocus=True, font="none 15 bold", width=10, command=lambda: click())
b.bind("<Return>", lambda e: click())
b.bind("<Tab>", lambda e: focus())
b.pack()
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何让标签按钮不再在文本框中缩进文本,而是将焦点移到按钮上吗?现在, SHIFT + TAB 有效,但我想了解如何仅按 TAB 即可工作。

感谢您的时间和帮助!

Sir*_*nie 7

Shift-tab 用于反向遍历。

我认为以下页面对您有用:http : //infohost.nmt.edu/tcc/help/pubs/tkinter/web/focus.html

从这个页面,有一段可以帮助你,

总结一下:要设置小部件的焦点遍历顺序,请按该顺序创建它们。通过将其 takefocus 选项设置为 0 来从遍历顺序中删除小部件,对于那些默认的 takefocus 选项为 0 的小部件,如果要将它们添加到顺序中,请将其设置为 1。

*编辑:看起来像将焦点从一个文本小部件更改为另一个的副本

**Edit2:所以......从上面的stackoverflow帖子中获取,以下内容将完全符合您的要求:

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

window = Tk()
window.title("What's Your Message?")
window.configure(background="black")
Label (window, text="Type Your Message:\n", bg="Black", fg="white", font="none 25 bold").pack(anchor=N)

e = Text(window, width=75, height=10)
e.bind("<Tab>", focus_next_widget)
Run Code Online (Sandbox Code Playgroud)