Python 3 - 如何将 tkinter 进度条与 bat 文件一起使用?

2024-06-05

到目前为止,蝙蝠运行了,但进度条没有运行。我如何将两者联系起来?这是输出的图像。https://i.stack.imgur.com/ytZ6F.jpg https://i.stack.imgur.com/ytZ6F.jpg

from tkinter import *
from tkinter import ttk
from subprocess import call

def runBat():
    call("mp3.bat")

root = Tk()

photobutton3 = PhotoImage(file="smile.png")
button3 = Button(root, image=photobutton3, command=runBat)
button3.grid()

pbar = ttk.Progressbar(root, orient=HORIZONTAL, length=200, mode='determinate')
pbar.grid()

root.mainloop()

这个答案最终不起作用。这个问题仍然悬而未决。

尝试这个:

import subprocess
import threading
import ctypes
import re
from tkinter import *
from tkinter import ttk

class RunnerThread(threading.Thread):
    def __init__(self, command):
        super(RunnerThread, self).__init__()
        self.command = command
        self.percentage = 0
        self.process = None
        self.isRunning = False
        
    def run(self):
        self.isRunning = True
        self.process = process = subprocess.Popen(self.command, stdout = subprocess.PIPE, shell = True)
        while True:
            #Get one line at a time
            #When read() returns nothing, the process is dead
            line = b""
            while True:
                c = process.stdout.read(1)
                line += c
                if c == b"" or c == b"\r": #Either the process is dead or we're at the end of the line, quit the loop
                    break
            if line == b"": #Process dead
                break
            #Find a number
            match = re.search(r"Frame\=\s(\d+\.?(\d+)?)", line.decode("utf-8").strip())
            if match is not None:
                self.percentage = float(match.group(1))
        self.isRunning = False
                
    def kill(self): #Something I left in case you want to add a "Stop" button or something like that
        self.process.kill()


def updateProgress():
    progressVar.set(rt.percentage) #Update the progress bar
    if rt.isRunning: #Only run again if the process is still running.
        root.after(10, updateProgress)

def runBat():
    global rt
    rt = RunnerThread("mp3.bat")
    rt.start()
    updateProgress()

root = Tk()

photobutton3 = PhotoImage(file="smile.png")
button3 = Button(root, image=photobutton3, command=runBat)
button3.grid()

progressVar = DoubleVar()
pbar = ttk.Progressbar(root, orient=HORIZONTAL, length=200, mode='determinate', variable = progressVar)
pbar.grid()

root.mainloop()

基本上,有一个线程从进程中读取数据,并将其提供给经常更新进度条的函数。您没有提到输出的格式,所以我编写它是为了使用正则表达式来搜索第一个数字并将其转换。

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

Python 3 - 如何将 tkinter 进度条与 bat 文件一起使用? 的相关文章

  • Python argparse 可能为空字符串值

    我想使用 argparse 在我的主函数中传递一些值 当调用 python 文件时 我总是希望包含参数的标志 同时包含或排除其字符串参数 这是因为如果可能的话 调用 python 文件的一些外部代码会变得更加简单 通过调用 parser a
  • 如何在 pygame 中制作一个进入网站的按钮?

    我的 pygame 中有一个 Credits 菜单 我想制作一些可以访问某些网站的按钮 我的意思是 当单击按钮时 它应该打开 例如 GitHub 或任何链接 有什么方法可以实现这个目标吗 实施一个Button类并使用网页浏览器 https
  • Thread 内调用协程

    是否可以使线程运行方法异步 以便它可以在其中执行协程 我意识到我正在混合范例 我正在尝试集成使用协程的第三方库 而我的项目使用线程 在考虑更新我的项目以使用协程之前 我想探索在线程中执行协程 下面是我的示例用例 其中我有一个线程 但我想从线
  • 使用 Python 从 SFTP 服务器下载时不要下载空文件夹

    我在这个网站上得到了一个用Python递归下载文件的代码 此代码还会下载服务器上的空目录 请帮助我修改此代码 以便它不会从服务器下载空目录 我的代码 基于来自 Linux 的 Python pysftp get r 在 Linux 上工作正
  • 从 SQLAlchemy 结果返回字段名称和值

    我如何使用 sqlalchemy 获取表列名称和值 使用我所拥有的 我能够检索 2 blue square 但我想得到的是 id 2 color blue type square 下面是我读完之后写的此文档适用于 0 9 版本 http d
  • 尝试在 PyQt5 中的 pyqtgraph 绘图小部件中获取带有坐标显示的光标

    我正在尝试在 PyQt5 的 pqytplot 图小部件中添加光标位置的读数 我发现这段代码可以实现我想要的功能 但是在一个独立的窗口中 所有这些都在一个程序文件中 import pyqtgraph as pg from pyqtgraph
  • Python - 使用嵌套列表时奇怪的 IF 语句

    我不明白为什么else条件未通过 有人可以解释为什么吗 Python 3 4 list list of list list append Test list append This list of list append list list
  • 如何在 tkinter 画布中将多个对象移动到一起? [复制]

    这个问题在这里已经有答案了 我试图用鼠标拖放在画布上移动一些带有文本的矩形 我使用 find overlapping 选择要移动的矩形 这意味着最初作为类对象 Rect 的一部分创建的文本不会移动 有没有办法修改我的代码以移动类对象中的所有
  • Pandas:根据除一行之外的其他多级列对最里面的列进行分组排序

    这是我的扩展previous question https stackoverflow com questions 65021214 pandas sort innermost column group wise based on othe
  • 为什么我在迭代 28 后收到错误:“JSONDecodeError:期望值:第 1 行第 1 列(字符 0)”? [复制]

    这个问题在这里已经有答案了 我正在尝试从政府的 API 中提取数据 该 API 分为多个页面 每页有 10 个观察结果 我编写了一个算法 可以从每个观察中获取重要信息并将其添加到 pandas 数据框中 一切都很顺利 直到我到达迭代 29
  • 如何在Python Idle中运行单元测试?

    我为我的单词出现 Gui 项目创建了一个 python 单元测试 我想测试前 5 个单词的出现情况 因此它应该返回一个真值 但是我不知道如何运行单元测试 我正在尝试使用空闲 shell 但我应该使用 Visual Studio 命令提示符
  • numba vstack 不适用于数组列表

    对我来说很奇怪的是 当输入是数组列表时 vstack 不能与 Numba 一起使用 它仅在输入是数组元组时才起作用 示例代码 nb jit nopython True def stack items return np vstack ite
  • 在 Pandas UDF PySpark 中传递多列

    我想计算 PySpark DataFrame 两列之间的 Jaro Winkler 距离 Jaro Winkler 距离可通过所有节点上的 pyjarowinkler 包获得 pyjarowinkler 的工作原理如下 from pyjar
  • Python中Shift和Caps Lock的状态

    我正在使用 Python 2 5 编写 TkInter 应用程序 我需要找出大写锁定和 Shift 键的状态 true 或 false 我在整个网络上进行了搜索 但找不到解决方案 Tkinter 中的键盘事件可能很棘手 我建议您按顺序查看以
  • 如何使用类似 KDnuggets 风格的 PDF 绘制比较箱线图

    在经历了解 KDnuggets 文章中的箱线图 https www kdnuggets com 2019 11 understanding boxplots html 我找到了带有概率密度函数的箱线图的详细图 pdf 我正在尝试绘制比较箱线
  • Travis-ci 和 Gobject 内省

    我正在尝试设置 Travis获取 GNOME https github com getting things gnome gtg My travis yml https github com getting things gnome gtg
  • \ufeff 标识符中的无效字符

    我有以下代码 import urllib request try url https www google com search q test headers usag Mozilla 5 0 Macintosh Intel Mac OS
  • 无法保存自定义子类模型

    灵感来自tf keras Model 子类化 https www tensorflow org guide keras model subclassing我创建了自定义模型 我可以训练它并获得成功的结果 但是我无法保存它 我使用 pytho
  • 如何在不重复代码的情况下定义 randint 元组?

    我经常使用 randint 元组来表示颜色值等 a b c randint 0 255 randint 0 255 randint 0 255 当我认为必须有更好的方法时 有吗 使用numpy 1 import numpy as np tu
  • Jupyter 笔记本无法连接到内核

    我正在尝试使用 Python 3 内核 检查它是否在 kernelspec 列表中 我创建了一个笔记本 并在第一个单元格中print test 当我执行单元格时 什么也没有发生 我刚看到In 它似乎永远不会执行 最终我得到 Connecti

随机推荐