删除 tkinter 文本默认绑定
Remove tkinter text default binding
我正在制作一个简单的 tkinter 文本编辑器,但我希望尽可能删除 文本小部件 的所有默认绑定。
例如,当我按下 Ctrl + i 时,它会默认插入一个制表符。
我做了一个事件绑定,打印文本框中有多少行,我也将事件绑定设置为 Ctrl + i。
当我 运行 它时,它会打印文本框内的行数,还会插入一个制表符。
我想知道如何覆盖默认绑定,或者了解如何删除所有默认绑定。
顺便说一句,这是我的代码:
from tkinter import *
class comd: # Contains primary commands
# Capital Rule ----------------------------
# G = Get | I = Insert | D = Draw | S = Set
# -----------------------------------------
def Ggeo(self): # Get Geometry (Get window geometry)
x = root.winfo_width()
y = root.winfo_height()
print("Current Window Geometry")
print(str(x) + " x " +str(y))
def Idum(self): # Insters "Dummy Insert"
import tkinter as tkin
tbox.insert(INSERT, "Dummy Insert")
def Ilim(self): # Prints How many lines are in
info = int(tbox.index('end-1c').split('.')[0])
print(info)
root = Tk()
root.geometry("885x600-25-25")
tbox = Text(root, font=("Courier","14","bold"))
tbox.pack(expand = True , fill = BOTH)
# Problem here --------------------
tbox.bind("<Control-i>", comd.Ilim)
# ---------------------------------
mainloop()
您可以通过让函数 return 字符串 "break"
来覆盖绑定。例如:
def Ilim(self): # Prints How many lines are in
info = int(tbox.index('end-1c').split('.')[0])
print(info)
return "break"
如果您想完全删除所有绑定(包括允许您插入字符的绑定),这很容易实现。所有绑定都与 "bind tag"(或 "bindtag")相关联。如果删除 bindtag,则删除绑定。
例如,这将删除所有默认绑定:
bindtags = list(tbox.bindtags())
bindtags.remove("Text")
tbox.bindtags(tuple(bindtags))
有关绑定标签的更多信息,请参阅此答案:
我正在制作一个简单的 tkinter 文本编辑器,但我希望尽可能删除 文本小部件 的所有默认绑定。
例如,当我按下 Ctrl + i 时,它会默认插入一个制表符。 我做了一个事件绑定,打印文本框中有多少行,我也将事件绑定设置为 Ctrl + i。
当我 运行 它时,它会打印文本框内的行数,还会插入一个制表符。
我想知道如何覆盖默认绑定,或者了解如何删除所有默认绑定。
顺便说一句,这是我的代码:
from tkinter import *
class comd: # Contains primary commands
# Capital Rule ----------------------------
# G = Get | I = Insert | D = Draw | S = Set
# -----------------------------------------
def Ggeo(self): # Get Geometry (Get window geometry)
x = root.winfo_width()
y = root.winfo_height()
print("Current Window Geometry")
print(str(x) + " x " +str(y))
def Idum(self): # Insters "Dummy Insert"
import tkinter as tkin
tbox.insert(INSERT, "Dummy Insert")
def Ilim(self): # Prints How many lines are in
info = int(tbox.index('end-1c').split('.')[0])
print(info)
root = Tk()
root.geometry("885x600-25-25")
tbox = Text(root, font=("Courier","14","bold"))
tbox.pack(expand = True , fill = BOTH)
# Problem here --------------------
tbox.bind("<Control-i>", comd.Ilim)
# ---------------------------------
mainloop()
您可以通过让函数 return 字符串 "break"
来覆盖绑定。例如:
def Ilim(self): # Prints How many lines are in
info = int(tbox.index('end-1c').split('.')[0])
print(info)
return "break"
如果您想完全删除所有绑定(包括允许您插入字符的绑定),这很容易实现。所有绑定都与 "bind tag"(或 "bindtag")相关联。如果删除 bindtag,则删除绑定。
例如,这将删除所有默认绑定:
bindtags = list(tbox.bindtags())
bindtags.remove("Text")
tbox.bindtags(tuple(bindtags))
有关绑定标签的更多信息,请参阅此答案: