【问题标题】:Formatted tkinter Text box格式化的 tkinter 文本框
【发布时间】:2014-01-20 02:00:27
【问题描述】:

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

我已经从这个示例 Add advanced features to a tkinter Text widget 中得到了这些东西,但我发现使用 font 关键字的任何格式都与使用 font 关键字的任何其他格式互斥。

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

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

【问题讨论】:

    标签: python text tkinter


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢@BryanOakley,我真的希望你能加入!我曾考虑按需生成标签,但名称计算功能是我缺少的部分,以使其正常工作。好东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多