设置为使用标签加粗选定的文本

时间:2012-03-28 03:53:50

标签: python text tkinter

我一直在努力制作一个简单的文本编辑器,并且一直在试验标签。我已经能够使用标签创建证明。现在我正在添加一个粗体选项。

我的问题是我找不到很多使用"sel"标记的示例,这是当前选择中使用的标记。

每当我使用SEL标签时,只要文本突出显示,文本就是粗体,当它变为非突出显示时,它会恢复为旧的瘦字体。

这只是我代码的一小部分:

def Bold(self, body, Just, Line, selected font):
    bold font = tkFont.Font(family=selectedfont, weight="bold")
    selected font = boldfont
    body.tag_config("sel",font=selectedfont)
    body.tag_add("sel", 1.0,END)

按下Bold按钮时,将调用上一个功能。 现在,我从body.tag_add("sel", 1.0, END)1.0设置了END,因为我不知道如何获取所选域名。 我已经尝试了<<Selection>>,但经过长时间的实验,它没有帮助我。

2 个答案:

答案 0 :(得分:6)

你的函数内部只需要tag_add()

import Tkinter as tk

def make_bold():
    aText.tag_add("bt", "sel.first", "sel.last")

lord = tk.Tk()

aText = tk.Text(lord, font=("Georgia", "12"))
aText.grid()

aButton = tk.Button(lord, text="bold", command=make_bold)
aButton.grid()

aText.tag_config("bt", font=("Georgia", "12", "bold"))

lord.mainloop()

我刚刚遇到了一个颇具教育意义的example,而不是布莱恩·奥克利 在一个完全不相关的搜索!

以下是更具动态替代方案的快速示例:

import Tkinter as tk
import tkFont

def make_bold():
    current_tags = aText.tag_names("sel.first")
    if "bt" in current_tags:
        aText.tag_remove("bt", "sel.first", "sel.last")
    else:
        aText.tag_add("bt", "sel.first", "sel.last")


lord = tk.Tk()

aText = tk.Text(lord, font=("Georgia", "12"))
aText.grid()

aButton = tk.Button(lord, text="bold", command=make_bold)
aButton.grid()

bold_font = tkFont.Font(aText, aText.cget("font"))
bold_font.configure(weight="bold")
aText.tag_configure("bt", font=bold_font)

lord.mainloop()

答案 1 :(得分:1)

标记属性属于标记,而不属于文本。因此,当您突出显示某些内容然后将属性应用于"sel"标记时,它只会影响具有"sel"标记的文本。删除标记时(通过取消标记),属性将恢复为默认值(或可能存在的任何其他标记)。

要使文本变为粗体,您必须创建具有粗体属性的标记,并将该标记指定给文本。只要文本具有该标记,它就具有该标记的属性。