将文本格式化到 Tkinter 进度条

Posted

技术标签:

【中文标题】将文本格式化到 Tkinter 进度条【英文标题】:Formatting Text to the Tkinter Progressbar 【发布时间】:2022-01-19 10:22:30 【问题描述】:

我知道根据这个问题将文本添加到进度条:

Displaying percentage in ttk progressbar

这对我有帮助,但我需要对答案进行更多调整。

    我需要文本(百分比)出现在进度条的左侧。

    为此,我将'side':'left' 添加到Horizontal.TProgressbar.label 的布局格式中。

如下:

style.layout('text.Horizontal.TProgressbar',
    [('Horizontal.Progressbar.trough',
    'children': [('Horizontal.Progressbar.pbar',
    'side': 'left', 'sticky': 'ns')],
    'sticky': 'nswe'),
    ('Horizontal.Progressbar.label', 'side':'left','sticky': '')])

但是,这会将文本移动到最左侧。它与进度条边框重叠,不清晰可读。

    我需要调整此文本的字体和字体颜色。我们如何改变它?

【问题讨论】:

【参考方案1】:

    要更改标签和边框之间的间距,您可以在布局中添加填充元素

     style.layout('text.Horizontal.TProgressbar',
         [('Horizontal.Progressbar.trough',
           'children': [('Horizontal.Progressbar.pbar',
                          'side': 'left', 'sticky': 'ns')],
            'sticky': 'nswe'),
          ('Horizontal.Progressbar.padding', 'side':'left'),
          ('Horizontal.Progressbar.label', 'side':'left','sticky': '')])
    

    然后用

    配置填充
    style.configure('text.Horizontal.TProgressbar', padding=4)
    

    您可以使用带有fontforeground 选项的style.configure 更改文本的字体和颜色:

     style.configure('text.Horizontal.TProgressbar', foreground="red", font='Arial 20')
    

在我对Progressbar with Percentage Label? 的回答中有一个创建此类进度条的完整示例。

【讨论】:

这种粘性的 west 和 side 方法将文本向左移动太多,几乎在边界上。使其无法阅读。我们可以与边界和文本开始的地方保持一定距离吗?还是唯一的解决方案是在文本前添加空格? @Meet 我现在意识到我没有正确回答问题的第一部分。我现在找到了一种方法来添加一些填充并编辑了我的答案。 嘿!谢谢这工作。顺便说一句,您究竟是如何创建该布局的?我找不到任何关于如何使用该语法的帮助或文章。 @Meet 我真的不记得了,我从示例中学习了布局的语法,主要是在 SO 上并通过我自己的尝试。您可以使用style.layout(<name>) 查看现有元素的布局,其中<name > 是“TLabel”、“TFrame”,... 您可以使用style.element_names() 获取要在布局中使用的元素列表,使用@987654331 获取它们的选项@.

以上是关于将文本格式化到 Tkinter 进度条的主要内容,如果未能解决你的问题,请参考以下文章

更新 Tkinter 进度条

用于多处理的 tkinter 进度条

Tkinter 之ProgressBar进度条标签

python的Tkinter中的Windows进度条

Python文本进度条

tkinter 进度条