Как изменить свойства выделенного текста только в tkinter - PullRequest
0 голосов
/ 05 июня 2018

Этот код меняет цвет текста, который вы вводите

from tkinter import*

from tkinter.colorchooser import*

def getColor():
    color = askcolor()
    text['fg'] = color[1]

root=Tk()
text=Text(root)
text.pack()

king=Menu(root)
root.config(menu=king)

view= Menu(king,tearoff = 0)

view2=Menu(view,tearoff=0)
view2.add_command(label='Color',command=getColor)

view.add_cascade(label='Text',menu=view2)

king.add_cascade(label="View",menu=view)

Но мне нужно изменить выделенный текст.Например, мы ввели текст «Здравствуйте, меня зовут Алекс», изменили цвет всего текста на красный, затем выберите слово «Алекс» и изменили только его цвет.возможно, здесь необходимо подать заявку, но я не знаю, как text.bind ('<B1-Motion>') text.tag_add(SEL_FIRST,SEL_LATS)

Помогите мне, пожалуйста

1 Ответ

0 голосов
/ 05 июня 2018

Вам не нужно связывать B1-Motion, чтобы сделать эту работу, потому что вы можете легко получить выбранный в данный момент текст.Каждый раз, когда цвет выбран, вы можете проверить, есть ли выбор.Если его нет, вы можете просто изменить атрибут foreground виджета «Текст».Если есть, вам нужно создать тег на текущем выделении и изменить foreground тега.Однако каждый раз, когда вы делаете это, вам нужно создавать новое имя тега, чтобы не менять цвет предыдущего выделения, вы можете использовать для этого простой счетчик, который вы добавляете к имени тега.

В коде, это может выглядеть так:

from tkinter import *
from tkinter.colorchooser import *

def getColor():
    global count
    color = askcolor()
    if text.tag_ranges('sel'):
        text.tag_add('colortag_' + str(count), SEL_FIRST,SEL_LAST)
        text.tag_configure('colortag_' + str(count), foreground=color[1])
        count += 1
    else:
        # Do this if you want to overwrite all selection colors when you change color without selection
        # for tag in text.tag_names():
        #     text.tag_delete(tag)
        text.config(foreground=color[1])

root=Tk()
text=Text(root)
text.pack()

count = 0

king=Menu(root)
root.config(menu=king)

view= Menu(king, tearoff=0)
view2=Menu(view, tearoff=0)
view2.add_command(label='Color',command=getColor)

view.add_cascade(label='Text', menu=view2)
king.add_cascade(label='View', menu=view)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...