Я предлагаю продолжить обсуждение в отключить сочетание клавиш tkinter : у меня есть обработчик событий для события, которое также использует Tkinter, так что мои проги и Tkinter плохо взаимодействуют.
Так как это проблема, которую я не смог решить, я перехожу сюда, где я попытался свести ее к простейшей форме в следующем коде:
#!/usr/bin/env python
from Tkinter import *
import tkFont
def init():
global root,text
root = Tk()
root.geometry("500x500+0+0")
dFont=tkFont.Font(family="Arial", size=10)
text=Text(root, width=16, height=5, font=dFont)
text.pack(side=LEFT, fill=BOTH, expand = YES)
root.bind("<Control-b>", setbold)
text.tag_config("b",font=('Verdana', '10', 'bold' ))
text.tag_config("i",font=('Verdana', '10', 'italic' ))
def removeformat(event=None):
text.tag_remove('b',SEL_FIRST,SEL_LAST)
text.tag_remove('i',SEL_FIRST,SEL_LAST)
def setbold(event=None):
removeformat()
text.tag_add('b', SEL_FIRST,SEL_LAST)
text.edit_modified(True)
def main():
init()
mainloop()
if __name__ == '__main__':
main()
Что этоНужно просто создать текстовое окно, в которое вы пишете.Выделив какой-либо текст и нажав Ctrl + B , программа должна удалить любой ранее существовавший тег, а затем присвоить ему тег 'b', который устанавливает жирный текст.
То, что вместо этого происходит, является исключениемна первом tag_remove
, говоря мне, что text doesn't contain any characters tagged with "sel"
.
Предложение использовать return 'break'
бесполезно, так как выбор исчезает до того, как setbold()
имеет какие-либо шансы действовать ...