当前位置: 首页 > 知识库问答 >
问题:

我在工作时如何使用该作品

阴焱
2023-03-14

运行tkinter的函数冻结。我想使用运行该进程的Tkinter窗口。当运行进度条我想使用tkinterwindow.but我不能,因为它冻结tkinter.how我可以使用根窗口,而time.sleep(10)或其他函数工作

import tkinter.ttk as ttk
import tkinter as tk
import time

progress = 0


def loading(window=None):
    mpb = ttk.Progressbar(window, orient="horizontal", length=200, mode="determinate")
    mpb.place(y=0, x=0)
    mpb["maximum"] = 100
    mpb["value"] = progress
    print(progress)


def incrase():
    global progress
    print(progress)
    progress += 1
    time.sleep(10)  # for example, a function works here and tkinter freezes
    loading()       # i don't want tkinter freezes


root = tk.Tk()
loading(root)
ttk.Button(root, text='increase', command=incrase).place(x=0, y=25, width=90)

root.mainloop()

谢谢你的回答

共有1个答案

孙嘉悦
2023-03-14

您应该使用after(),通过它可以安排load()函数在一段时间后调用

下面是如何在程序中使用它:

import tkinter.ttk as ttk
import tkinter as tk
import time

progress = 0


def loading(window):
    mpb = ttk.Progressbar(window, orient="horizontal", length=200, mode="determinate")
    mpb.place(y=0, x=0)
    mpb["maximum"] = 100
    mpb["value"] = progress
    print(progress)


def incrase():
    global root
    global progress
    print(progress)
    progress += 1
    root.after(10, loading(root))  # schedule loading() 



root = tk.Tk()
loading(root)
ttk.Button(root, text='increase', command=incrase).place(x=0, y=25, width=90)

root.mainloop()

上述运行程序的屏幕截图:

 类似资料:
  • 在底部将此选项设置为true vs false时,它们将列出结果的差异 在我的EMR配置(在presto-config中)中包含设置为之后,我仍然会根据这个测试查询获得新的结果(并且我的UTC时间戳仍然会自动转换)。 对于启用遗留时间戳行为还需要做些什么有什么建议吗?

  • 我正试图让spring slueth通过我们的系统提供追踪身份。 在检查其他服务的日志时,我注意到正在生成新的ID。

  • 问题内容: 我已经做了几次尝试,以使包注释@ParametersAreNonnullByDefault在maven项目中为我工作,但没有成功。有人可以共享一个指向最小/示例maven项目的链接吗(或发布了pom.xml和package- info.java和demo类)? 我说的是让findbugs处理器为我实施它。 问题答案: 如何申请 在您的程序包中创建一个文件,以在其中强制执行所需的行为。

  • 问题内容: DISTINCT在JPA中使用哪一列,并且可以更改它? 这是使用DISTINCT的示例JPA查询: 哪一个没有多大意义-区别基于哪个列?是否在Entity上将其指定为注释,因为我找不到注释? 我想指定要区分的列,例如: 我正在使用MySQL和Hibernate。 问题答案: 更新:请参阅投票最多的答案。 我自己的已经过时了。 仅出于历史原因保留在这里。 在Joins中通常需要在HQL中

  • 我正在使用Azure函数进行一个ETL项目,在该项目中,我从blob存储中提取数据,在Python和pandas中转换数据,并使用pandas将数据加载到_sql()。我试图通过使用异步IO和语言工作者来提高这个过程的效率。 我有点困惑,因为我的印象是asyncio使用一个线程工作,但Azure Functions文档说如果你改变配置,你可以使用多个语言工作者,甚至一个不使用async关键字的方法

  • PPMessage客服平台包括PPConsole,PPKefu,PPCom,PPMessage服务器四部分。前三者属于客户端范畴,都连接着PPMessage服务器。 PPKefu, PPConsole, PPCom 与 PPMessage服务器 +--------------------+ 1 +-----------------------+ 2 +----