python - Tkinter 进度条冻结 GUI
问题描述
我正在尝试使用 Tkinter 在 python 上运行不确定的进度条。
我正在使用一个线程来使用子进程运行一些 script.py,这是流程:
- 为函数启动线程(包括 subprocess 命令)。
- 启动线程。
- 启动不确定的进度条 - 它位于根目录上。
进度条开始移动,但如果我最小化 GUI 窗口并返回,它只会进入“无响应”并冻结。
我知道 Tkinter 不是线程安全的,但我确信有办法解决这个问题。
这是代码:
# Thread start:
def start(self):
self.thread = threading.Thread(target=self.run_command, args=(
CTFpath + " " + os.path.join(FWpath, version, FWProductionPath) + " --release",))
self.thread.start()
# function with subprocess
def run_command(self, command):
self.ui.ProgressBarStart()
self.process = subprocess.Popen(command, shell=False, stdout=outfile)
subprocess.Popen.wait(self.process)
# function to start progressbar
def ProgressBarStart(self):
self.progressBar.place(x=430, y=272.4)
self.progressBar.start()
progressBar 已经在主程序中初始化。有什么办法可以解决这个问题吗?非常感谢!
解决方案
推荐阅读
- ruby - 在 Windows 上安装 gem libxml-ruby 版本 2.4.0 时出错
- bash - 使用 yq 更新带有 artifacthub.io 注释的 yaml 文件
- zip - zip' 或 'tar' 命令生成归档到标准输出
- php - php cronofy 集成不起作用。如何解决?
- git - 如何在 git 中合并 PR 后重新设置开发分支?
- angular - Angular 热敏打印不适用于 HTTP 而不是 HTTPS
- java - 如何在 Drools 文件中传递多个对象并提取所需的对象
- python - 从 Fortran 到 Python 的转换是傅里叶变换
- sql-server - SQL Server - updlock,可序列化不会阻止 100%
- c# - 在C#中使用内存流下载excel文件