首页 > 解决方案 > Tkinter 进度条冻结 GUI

问题描述

我正在尝试使用 Tkinter 在 python 上运行不确定的进度条。

我正在使用一个线程来使用子进程运行一些 script.py,这是流程:

  1. 为函数启动线程(包括 subprocess 命令)。
  2. 启动线程。
  3. 启动不确定的进度条 - 它位于根目录上。

进度条开始移动,但如果我最小化 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 已经在主程序中初始化。有什么办法可以解决这个问题吗?非常感谢!

标签: pythonfunctiontkinterthread-safetyprogress-bar

解决方案


推荐阅读