python - 格式化 tkinter 文本框

标签 python text tkinter

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

在这个例子中,我已经让所有这些事情都可以独立工作 Add advanced features to a tkinter Text widget但我发现任何使用 font 关键字的格式与任何其他使用 font 关键字的格式都是互斥的。

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

除了预先创建字体标签的所有可能组合,并使用一堆逻辑来决定在单击格式按钮时将哪些字体应用于选定的文本部分之外,还有什么更好的方法吗?

最佳答案

不,没有办法组合多个字体标签的结果。如果您想要粗体斜体,除了粗体和斜体字体之外,您还必须创建粗体斜体字体。

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

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

虽然 tkinter 文本小部件在它的功能和使用的简单性方面非常出色,但这是它有点不足的地方。

关于python - 格式化 tkinter 文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20886043/

相关文章:

python - 克服 python 中的 appengine 500 字节字符串限制?考虑文本

python - pip install mysqlclient 在 win64 上无法正常工作,出现错误 'Cannot open file: ' mysql.h'

编写类时出现Python错误?

python - 使用 bash 或 python 或其他一些 linux 命令行工具创建一个 dovecot SHA1 摘要

python - Tkinter 问问题对话框

python - Tkinter 与另一个无限循环(用于语音到文本的转换)

python - 在 x 轴上绘制音频时间而不是 matplotlib 图形的 tkinter GUI 显示中的音频采样率

python - 类名作为幂等类型转换函数

python nltk 朴素贝叶斯概率

c# - 将文本转换为 unicode 字符串