格式化的tkinter文本框

时间:2014-01-02 15:23:00

标签: python text tkinter

我正在尝试使用tkinter Text小部件来实现一些基本的文本格式化功能。粗体,下划线,斜体和一些字体大小。

我已经从这个例子Add advanced features to a tkinter Text widget中自行完成了这些事情,但我发现使用font关键字的任何格式都与使用font关键字的任何其他格式互斥。

例如: 要实现“粗体”,我预先创建一个标签,复制文本框的默认字体,将其更改为粗体,然后将其用作tag_configure的font =参数。我以相同的方式做斜体,也有不同的字体大小。我没有看到一个简单的方法来获得一个“粗体”按钮,单击该按钮会使所选文本变为粗体,但保留其字体的所有其他功能(例如,如果它之前的大小为18)。

有没有比预先创建所有可能的字体标签组合更好的方法,并且有一堆逻辑可以决定在单击格式化按钮时将哪一个应用于选定的文本部分?

1 个答案:

答案 0 :(得分:2)

不,无法合并多个字体标记的结果。如果你想要粗斜体,除了粗体字和斜体字外,你还必须创建一个粗斜体字体。

至于比预先创建所有可能组合更好的方法,我建议您在第一次需要时创建它们。没有理由创建一堆你可能永远不需要的字体。这不是一个特别难以解决的问题,它只是有点单调乏味。

我将从一个函数开始,该函数可以根据所需的特征计算字体的规范名称(例如:“bold-italic-18”)。接下来,编写一个为该特定组合创建标记的函数(如果尚不存在),然后返回该标记名称。然后,只需确定范围中每个字符应具有的属性,获取标记以及应用标记。再次,乏味,但不是特别难。

虽然tkinter文本小部件在它可以做什么以及使用起来多么容易方面非常了不起,但这是一个有点短暂的领域。