2015-07-09 3 views
2

Я делаю простой текстовый редактор tkinter, но мне нужны все привязки по умолчанию для Текстовый виджет удален, если это возможно.Удалить текстовое привязку текста tkinter

Например, когда я нажимаю Ctrl + i, он по умолчанию вводит символ табуляции. Я сделал привязку события, которая печатает, сколько строк находится в текстовом поле, я установил привязку события к Ctrl + i.

Когда я запустил его, он печатает количество строк внутри текстового поля, но также вставляет символ табуляции.

Я хочу знать, как я могу Перезаписать привязки по умолчанию или узнать способ удаления всех привязок по умолчанию.

Heres мой код КСТАТИ:

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() 

ответ

5

Вы можете перезаписать обвязки имея ваша функция возвращает строку "break". Например:

def Ilim(self): # Prints How many lines are in 
    info = int(tbox.index('end-1c').split('.')[0]) 
    print(info) 
    return "break" 

Если вы хотите, чтобы полностью удалить все привязки (в том числе креплений, которые позволяют вставить символы), которые могут быть легко выполнены. Все привязки связаны с «тегом связывания» (или «bindtag»). Если вы удалите bindtag, вы удалите привязки.

Например, это снимает все привязки по умолчанию:

bindtags = list(tbox.bindtags()) 
    bindtags.remove("Text") 
    tbox.bindtags(tuple(bindtags)) 

Для получения дополнительной информации о связываемых тегах см этого ответа: https://stackoverflow.com/a/11542200/7432

Смежные вопросы