有沒有一種方法可以將按鍵綁定到根目錄而不干擾tkinter中的默認綁定

我試圖在tkinter中添加語法高亮顯示到文本小部件,我使用的代碼來自另一個堆棧溢出問題Pygments syntax highlighter inpythontkinter文本小部件我將syntax hyghlighting函數綁定到根,但問題是所有其他默認綁定(如CTRL A)都停止工作。如果我將其綁定到文本小部件,它們可以正常工作,但最后輸入的字母不會突出顯示。下面是代碼(我是編程新手,所以可能會有很多愚蠢的錯誤)

from tkinter import *
from pygments import lex
from pygments.lexers import PythonLexer

def test(e):
    txt.mark_set("range_start", "1.0")
    data = txt.get("1.0", "end")
    for tag in txt.tag_names():
        txt.tag_remove(tag,"1.0","end")
    for token, content in lex(data, PythonLexer()):
        txt.mark_set("range_end", "range_start + %dc" % len(content))
        txt.tag_add(str(token), "range_start", "range_end")
        txt.mark_set("range_start", "range_end")

root=Tk()
txt=Text(root)
txt.pack(expand='yes')
txt.tag_configure("Token.Comment.Single", foreground='red')
root.bind('<Any-KeyPress>',test)
root.mainloop()
? 最佳回答:

問題不是因為要替換默認綁定。在tkinter中綁定不是這樣工作的。沒有直接綁定到根小部件或任何其他特定小部件的綁定。默認綁定實現為“所有”或小部件類上的綁定,而不是單個小部件。

如果我將其綁定到文本小部件,它們可以正常工作,但最后輸入的字母不會突出顯示。

這是因為小部件上的綁定發生在默認綁定之前。因此,如果您鍵入“a”,您的代碼將在插入字母“a”的代碼之前被調用。

這個網站上有一個關于事件處理順序的問題。雖然答案與條目小部件有關,但完全相同的概念適用于所有小部件。在tkinter中查看這個關于bindtag的基本查詢問題的答案

主站蜘蛛池模板: 在线视频一区二区三区四区| 国产一区二区三区不卡在线观看| 国产在线不卡一区| 国模精品一区二区三区| 成人午夜视频精品一区| 亚洲国产一区在线| 竹菊影视欧美日韩一区二区三区四区五区 | 一区二区三区四区免费视频| 亚洲AV无码一区二区乱孑伦AS| 一区二区三区免费视频播放器| 国产成人精品视频一区| 97精品国产福利一区二区三区| 无码乱人伦一区二区亚洲一| 日韩人妻无码一区二区三区99 | 亚洲国产AV一区二区三区四区 | 日韩精品中文字幕视频一区 | 久久久91精品国产一区二区| 精品女同一区二区| 亚洲日韩精品国产一区二区三区 | 鲁丝片一区二区三区免费| 一区二区视频传媒有限公司| 手机看片一区二区| 日本免费一区二区在线观看| 在线观看精品视频一区二区三区| 后入内射国产一区二区| 东京热人妻无码一区二区av| 无码精品一区二区三区免费视频 | 久久精品无码一区二区日韩AV| 亚洲日韩国产精品第一页一区| 少妇无码AV无码一区| 精品视频一区二区| 国精产品一区一区三区MBA下载 | 国产一区二区三区在线观看精品 | 一区二区在线视频免费观看| 亚洲av无码一区二区三区天堂| 亚洲AV一区二区三区四区| 国产乱码精品一区二区三区| 精品一区二区三区在线播放| 武侠古典一区二区三区中文| 中文字幕精品亚洲无线码一区应用| 中文字幕一区在线播放|