在TTK进度栏中显示百分比

时间:2019-11-18 16:06:58

标签: python tkinter

我正在尝试在函数运行时在ttk progressbar中显示百分比,以警告用户所执行过程的程度以及剩余的内容。能够显示正确的百分比,但百分比最高为23%的{​​{1}}的{​​{1}}。

如何使length的{​​{1}}达到100%

tuple

progressbar picture

1 个答案:

答案 0 :(得分:0)

正如@Bryan Oakley和其他人指出的,解决方案主要是正确地进行数学运算。这是一个根据您的问题代码执行此操作的具体示例。我还对其进行了修改,以证明a='2012-01-31' [[ "$a" =~ (....)-(..)-(..) ]] || exit # exit if regex match failed echo "${BASH_REMATCH[3]}-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}" 的工作方式略好一点,即使用通用的after()函数来定期更新小节的值。

Progressbar

import time import tkinter as tk import tkinter.ttk as ttk tuple_1 = tuple(range(1, 25)) brt = len(tuple_1) def progress_bar_func(): global num num = 1 root.after(500, update_progress_bar) def update_progress_bar(): global num if num <= brt: percentage = round(num/brt*100) # Calculate percentage. print(num, percentage) progressBar['value'] = num style.configure('text.Horizontal.TProgressbar', text='{:g} %'.format(percentage)) num += 1 if num > brt: print('Done') else: root.after(500, update_progress_bar) root = tk.Tk() root.geometry("300x300") style = ttk.Style(root) style.layout('text.Horizontal.TProgressbar', [('Horizontal.Progressbar.trough', {'children': [('Horizontal.Progressbar.pbar', {'side': 'left', 'sticky': 'ns'})], 'sticky': 'nswe'}), ('Horizontal.Progressbar.label', {'sticky': ''})]) # , lightcolor=None, bordercolo=None, darkcolor=None style.configure('text.Horizontal.TProgressbar', text='0 %') progressBar = ttk.Progressbar(root, style='text.Horizontal.TProgressbar', length=200, maximum=brt, value=0) progressBar.pack() progress_button = tk.Button(root, text="start", command=progress_bar_func) progress_button.pack() root.mainloop() 完成时的屏幕截图

screenshot of progressbar when it stops updating