python-3.x - 如何在customtkinter上添加进度条?

标签 python-3.x tkinter progress-bar tqdm customtkinter

import customtkinter as CTK

class App(CTK.CTk):
    def __init__(self):
        super().__init__()

    self.bar = CTK.CTkProgressBar(master=self.checkbox, orientation='horizontal', mode='determinate')
    self.bar.grid(row=10, column=0, pady=10, padx=20, sticky="n")


    def test(self):
    for x in range(500):
        return x**2

我希望当我想要运行测试功能时(通过我已经制作的按钮,它本身可以正常工作),栏会启动,当它结束时它会停止。虽然最好的是如果有一种方法可以在 UI 本身中使用 tqdm 进度条来代替 tkinter 进度条?

我尝试添加 self.bar.start() 并在函数的开始/结束处停止,但似乎不起作用。它仅在函数本身完成后运行。

最佳答案

除了启动和停止进度条之外,您还需要在每次迭代时更新它。 documentation指出条形图从 0 到 1,因此您需要想出一种方法来测量增量,然后将它们重新调整为所需范围之间的 float 。

您还需要在小部件声明后立即设置进度条的初始值,因为默认值为 0.5(半程)。

此外,您需要使用 update_idletasks() 方法让进度条实际移动到每个步骤。否则,它将等待任务执行完毕,然后更新值。

import customtkinter as CTK

class App(CTK.CTk):
    def __init__(self):
        super().__init__()

    self.bar = CTK.CTkProgressBar(master=self.checkbox,
                                  orientation='horizontal',
                                  mode='determinate')
    
    self.bar.grid(row=10, column=0, pady=10, padx=20, sticky="n")
    
    # Set default starting point to 0
    self.bar.set(0)
    
    def test(self):
        n = 500
        iter_step = 1/n
        progress_step = iter_step
        self.bar.start()
        
        for x in range(500):
            self.bar.set(progress_step)
            progress_step += iter_step
            self.update_idletasks()
        self.bar.stop()

现在您只需要包含一个按钮或其他一些对象来初始化您的函数。

关于 return 语句,我不建议这样做。您也可以将每个元素附加到列表中,并在进度条结束时将其返回。

希望这有帮助。

关于python-3.x - 如何在customtkinter上添加进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74686881/

相关文章:

mysql - 我需要在 pycharm IDE 中配置 django 和 mysql

python - 如何捕获 IllegalMonthError

python - 获取调整后的 matplotlib 绘图窗口的大小

python - 使工具提示文本像表格一样显示?

python - 保持 tkinter Progressbar 运行直到创建文件

python-3.x - 没有收到检测到的汽车上的盒子

python - 装饰器使函数返回 None

python - 如何在 Windows 7 上安装适用于 python 2.7 的 tkinter 或 Tcl?

android - android中的等待进度条

asp.net-mvc-3 - .net MVC 3.0 带进度条的文件上传