带进度条的 Tkinter GUI

2024-03-08

我有一个简单的 Tk GUI 和一个附加到按钮的函数中的长流程。我想要一个进度条,当我点击按钮时,就像它开始一个漫长的过程一样。

我怎样才能做到这一点?这是我当前的代码:

from tkinter import Button, Tk, HORIZONTAL

from tkinter.ttk import Progressbar
import time


class MonApp(Tk):
    def __init__(self):
        super().__init__()

        bt1 = Button(self, text='Traitement', command=self.traitement)
        bt1.grid()
        self.progress = Progressbar(self, orient=HORIZONTAL, length=100, mode='indeterminate')
        self.progress.grid()
        self.progress.grid_forget()

    def traitement(self):
        self.progress.grid()
        self.progress.start()
        time.sleep(15) 
        ## Just like you have many, many code lines...

        self.progress.stop()


if __name__ == '__main__':
    app = MonApp()
    app.mainloop()

如何在该应用程序中放置进度条?


你可以找到ttk.Progressbar at tkdocs http://www.tkdocs.com/tutorial/morewidgets.html#progressbar

import time
from tkinter import *
from tkinter.ttk import *

tk = Tk()
progress = Progressbar(tk, orient=HORIZONTAL, length=100, mode='determinate')


def bar():
    progress['value'] = 20
    tk.update_idletasks()
    time.sleep(1)
    progress['value'] = 50
    tk.update_idletasks()
    time.sleep(1)
    progress['value'] = 80
    tk.update_idletasks()
    time.sleep(1)
    progress['value'] = 100

progress.pack()
Button(tk, text='foo', command=bar).pack()
mainloop()

最好用threading并在另一个线程中运行您的代码。

像这样:

import threading
import time
from tkinter import Button, Tk, HORIZONTAL
from tkinter.ttk import Progressbar

class MonApp(Tk):
    def __init__(self):
        super().__init__()

        self.btn = Button(self, text='Traitement', command=self.traitement)
        self.btn.grid(row=0, column=0)
        self.progress = Progressbar(self, orient=HORIZONTAL, length=100, mode='indeterminate')

    def traitement(self):
        def real_traitement():
            self.progress.grid(row=1,column=0)
            self.progress.start()
            time.sleep(5)
            self.progress.stop()
            self.progress.grid_forget()

            self.btn['state']='normal'

        self.btn['state']='disabled'
        threading.Thread(target=real_traitement).start()


if __name__ == '__main__':
    app = MonApp()
    app.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带进度条的 Tkinter GUI 的相关文章

随机推荐

  • CVS 和 Subversion 可以设置为忽略合并中的空格吗?

    CVS 和 Subversion 都有一个方便的合并功能 因此当您更新已修改的源文件时 它会合并其他人对同一文件所做的更改 但是 如果您的更改与其他更改不兼容 通常如果您都更改了代码的相同部分 则会产生冲突 这两段源代码都将包含在合并的文件
  • 使用 Ping 时蓝屏

    我遇到了一个错误 它在 ping 过程中蓝屏结束调试 我有几种方法可以在我的 wpf 应用程序中禁用它 我连续 ping 但有时我忘记这样做并出现 BSOD 我想通过更改全局AllowRealPinging变量并在退出调试器之前在回调中休眠
  • mockito + easymock - NoClassDefFoundError:net/sf/cglib/proxy/Enhancer

    我正在使用 easymock powermock 编写测试 我使用 powermock 的原因是模拟静态方法 我的测试课看起来像 import static org powermock api easymock PowerMock mock
  • 以管理员身份运行的 Visual Studio 2015 使用大量 CPU

    我在装有 VMWare Fusion 7 的 Mac 上安装了 Windows 10 和 Visual Studio 2015 Visual Studio 2015 运行良好 但是当我想调试时 我需要关闭 VS2015 并以管理员身份运行它
  • 允许基于 HTTP:X-FORWARDED-FOR 的 htaccess 访问

    您好 我应该只允许特定的 IP 地址 即 HTTP X FORWARDED FOR 地址 访问文件 我已经通过以下方式做到了 Options FollowSymLinks RewriteEngine On RewriteBase Rewri
  • 如何自动打开第一个collapsibleset集(手风琴)?

    我有一个可折叠集 当加载页面时 我想自动打开第一个可折叠集 我如何在 jquery mobile 中做到这一点 来自文档 http jquerymobile com demos 1 2 0 alpha 1 docs content cont
  • 我可以通过 DataTrigger (XAML) 调用函数吗?

    我在 xaml cs 中有一个我想调用的函数 xaml cs private void treeView SelectedItemChanged object sender EventArgs e treeView ScrollToCent
  • “pipenv”不被识别为内部或外部命令、可操作程序或批处理文件

    我是 python 的初学者 所以请温柔一点 如果你有答案 请提供详细信息 在确保删除所有以前的安装 包括 anaconda 后 我刚刚安装了最新的 python 版本 3 10 我确信我的系统之前没有安装过任何内容 安装 python 3
  • CKEditor 插件按钮在源模式下禁用

    我试图在 CKEditor 中添加我自己的工具栏按钮 在 vBulletin 内 以下是我的代码 CKEDITOR plugins add app init function editor editor addCommand AppWidg
  • 有相对于​​ root 的链接吗?

    有没有办法让页面上的所有链接都相对于根目录 例如 关于www example com fruits apples apple html我可以有一个链接说 a href fruits index html Back to Fruits Lis
  • C++ 中的按元素运算

    是否有一个预先存在的库可以让我创建具有以下属性的类似数组的对象 运行时大小规范 在实例时选择 之后不会增长或缩小 运算符重载以执行元素明智的操作 即c a b将产生一个向量c with c i a i b i 对全部i 类似地对于 etc
  • Python Pandas:使用参数将多个函数传递给 agg()

    我正在努力弄清楚如何组合 pandas 的两种不同语法dataframe agg 功能 采用这个简单的数据框 df pd DataFrame A group1 group1 group2 group2 group3 group3 B 10
  • Quartz.Net IJobFactory 接口中 ReturnJob 的用途是什么

    我使用简单的注入器作为 IOC 容器 但我不清楚它的责任是什么返回工作 我想知道我该如何继续 这是我到目前为止所做的代码 public class SimpleInjectorJobFactory IJobFactory private r
  • 接口和类方法的注释应该如何不同

    在使用 C 中的 Web 客户端软件工厂 WCSF 开发 ASP net Web 应用程序时 我遇到了这种困境 同样的情况也适用于其他平台和语言 我的情况是这样的 我正在定义一个我基于 WCSF 范例查看每个网页 用户控件的界面 然后让页面
  • 在 SQLServer 作为 sessionState 模式的 ASP.NET 中,如何处理会话对象超时?

    当您将 SQL Server 设置为 ASP NET 应用程序中的状态处理程序时 如何或在何处处理会话超时 是 NET框架在从数据库加载会话对象后判断对象是否过期 还是SQL Server本身负责处理这个问题 我怀疑 甚至考虑 后一种可能性
  • 如何在 Perl 中使用反引号捕获两个不同变量中的 STDOUT 和 STDERR

    假设我想从带有反引号的脚本中运行外部程序 同时我想捕获 STDOUT 和 STDERR 但在两个不同的变量中 我怎样才能做到这一点 例如 如果我运行这个脚本 my cmd snmpwalk v version c community hos
  • python 只读类属性

    有没有办法在Python中创建只读类属性 前任 在Unity3d中你可以这样做 transform position Vector3 zero Vector3 zero 返回 Vector3 类的实例 其中 x y 和 z 均为 0 这与以
  • IDataErrorInfo:提交页面时进行验证

    我正在创建一个 WPF 应用程序 它将使用IDataErrorInfo数据验证 我的业务对象实现的 我一直在与这个演示来自博客文章 http www codegod de WebAppCodeGod WPF IDataErrorInfo a
  • 根接口属性无法通过 Html 助手中的父接口访问

    我觉得我在这里缺少一些基本的东西 我有2个接口 一种称为 IIdentABLE 它指定 Id 属性的存在 第二个实际上可以是任何可识别的东西 请参阅下面的代码 public interface IIdentifiable Guid Id g
  • 带进度条的 Tkinter GUI

    我有一个简单的 Tk GUI 和一个附加到按钮的函数中的长流程 我想要一个进度条 当我点击按钮时 就像它开始一个漫长的过程一样 我怎样才能做到这一点 这是我当前的代码 from tkinter import Button Tk HORIZO