python - 使用 Tkinter Text 获取 tab 键以转到下一个字段(而不是缩进)
问题描述
我已经搜索并花了大约两个小时试图自己解决这个问题,但我的努力失败了。我的目标是在文本框中输入一条消息,按 Tab 转到电子邮件按钮,然后按 Enter 发送电子邮件。
现在,在 TEXT 字段中按 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()
你能告诉我如何让标签按钮不再缩进文本框中的文本,而是将焦点移到按钮上吗?现在, SHIFT + TAB 有效,但我想了解如何让 TAB 正常工作。
感谢您的时间和帮助!
解决方案
Shift-tab 用于反向遍历。
我认为以下页面对您有用:http: //infohost.nmt.edu/tcc/help/pubs/tkinter/web/focus.html
从这个页面,有一段可以帮助你,
总结一下:要设置小部件的焦点遍历顺序,请按该顺序创建它们。通过将其 takefocus 选项设置为 0 从遍历顺序中删除小部件,对于那些默认 takefocus 选项为 0 的小部件,如果要将它们添加到 order 中,请将其设置为 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)
推荐阅读
- vba - 计数并转移到新工作表 VBA
- php - 如何仅获取经过验证的字段?
- php - 当第二个参数包含运算符符号时,为什么 ltrim 会删除一个字符?
- c# - SAP:通过 Web 服务调用发现可用的 Web 服务?
- sql-server - 将keras模型保存到数据库
- javascript - 在这个可变的背景图像 javascript 上包含一个淡入淡出(慢)
- jdbc - Lagom Jdbc 读取端支持:com.typesafe.config.ConfigException$Missing:找不到密钥“slick.profile”的配置设置
- android - 如何从任何服务器主机使用 android 中的 Web 服务访问数据
- c# - 消息在 Botframework 中没有延迟
- entity-framework - 抽象 ef core 2 dbContext