如何在python中解除默认绑定 "Tab "键的Ctrl-i的绑定?

问题描述 投票:0回答:1

我在python中做了一个文本编辑器,默认情况下Ctrl+i是绑定在Tab键上的,每次按Ctrl+i,字体都是斜体,但光标也会移动到一个 "tab "上。

import tkinter as tk
from tkinter import ttk
from tkinter import font, colorchooser, filedialog, messagebox
import os

main_application = tk.Tk()
main_application.geometry('1200x800')
main_application.title('Rpad')

text_editor = tk.Text(main_application)
text_editor.config(wrap='word', relief=tk.FLAT)


tool_bar = ttk.Label(main_application)
tool_bar.pack(side=tk.TOP, fill=tk.X)

# italic button
italic_icon = tk.PhotoImage(file='icons2/italic.png')
italic_btn = ttk.Button(tool_bar, image=italic_icon)
italic_btn.grid(row=0, column=3, padx=5)

# italic functionlaity


def change_italic(event=None):
    text_property = tk.font.Font(font=text_editor['font'])
    if text_property.actual()['slant'] == 'roman':
        text_editor.configure(
            font=(current_font_family, current_font_size, 'italic'))

    if text_property.actual()['slant'] == 'italic':
        text_editor.configure(
            font=(current_font_family, current_font_size, 'normal'))


italic_btn.configure(command=change_italic)
main_application.bind("<Control-i>", change_italic)

text_editor.focus_set()
text_editor.pack(fill=tk.BOTH, expand=True)


## font family & font size functionality ##
default_font_family = 'Arial'
default_font_size = 12
current_font_family = 'Arial'
current_font_size = 12


main_application.mainloop()
python python-3.x tkinter key-bindings
1个回答
1
投票

你不需要取消默认的绑定。tkinter中绑定的工作方式是,首先应用你的自定义绑定,然后再应用默认绑定。为了防止默认绑定发生,你的函数只需要返回字符串 "break"。

© www.soinside.com 2019 - 2024. All rights reserved.