如何解决Tkinter:在键盘输入上用颜色突出显示选定的文本
我是Tkinter的新手,我正在尝试构建一个注释工具,其中希望用户选择的文本在按下键盘键时以某种颜色突出显示。到目前为止,这是我的代码。
from tkinter import *
import tkinter as tk
from tkinter import Frame,Menu
from tkinter import ttk
class StartPage(tk.Frame):
def __init__(self,master):
tk.Frame.__init__(self,master)
self.results_field = tk.Text(self)
self.results_field.insert('insert','sometext'*100)
self.results_field.config(height=10,spacing1=5,yscrollcommand=True,wrap='word')
self.results_field.tag_configure("start",background="black",foreground='red')
self.results_field.bind('<KeyPress>',self.onKeyPress)
self.results_field.pack()
def onKeyPress(self,event):
self.results_field.tag_add("start","sel.first","sel.last")
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.switch_frame(StartPage)
def switch_frame(self,frame_class):
new_frame = frame_class(self)
self._frame = new_frame
self._frame.pack()
def main():
app=App()
app.geometry("1000x500")
app.mainloop()
if __name__ == '__main__':
main()
我张贴了整个代码,以免我在其他任何地方犯了错误。任何帮助将不胜感激。在此先感谢:)
解决方法
哦,你好亲近。唯一的事情是,当您按下一个键时,“文本”小部件也将要执行一个操作,并且大多数情况下,该操作涉及删除选定的文本。我确定您已经注意到您的代码可以使用不影响文本的键(例如Shift和Ctrl)正常工作。要使其与其余功能一起使用,您需要禁用“文本”操作。为此,您可以在按键功能中添加一个return "break"
。
def onKeyPress(self,event):
# todo: add try block to catch nothing selected error
self.results_field.tag_add("start","sel.first","sel.last")
return "break" # Disable Text action
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。