python的Tkinter中的Windows进度条

Posted

技术标签:

【中文标题】python的Tkinter中的Windows进度条【英文标题】:Windows progress bar in python's Tkinter 【发布时间】:2011-09-17 21:53:57 【问题描述】:

在 python 的 Tkinter、bwidget 或任何类似的东西中是否有任何方法可以显示 Windwos 的默认进度条? 我已经知道 bwidget.ProgressBar,但它会产生一个丑陋的进度条,而我的意思是显示一个有效的 Windows 进度条 - 绿色、发光的进度条:

http://imageshack.us/photo/my-images/853/unledtph.png/

我需要它,因为这样 Windows 会自动在任务栏中显示我的程序的进度。另外,它看起来更好。

【问题讨论】:

【参考方案1】:

最简单的解决方案似乎是将主题 Tk 与 Python 2.7 和 3.1 中包含的 tkinter.ttk 模块一起使用。 Progressbar 小部件就是您想要的。

由于您似乎正在考虑其他框架,因此您可能会查看 Qt 或 wxWidgets,它们看起来很原生并且具有出色的 Python 绑定。

【讨论】:

问题是我已经有一个使用 Tkinter 的完整的启动和运行应用程序 - 我想要做的就是添加一个 prog。吧。如果我想知道我应该使用什么 python 模块进行 GUI 编程 - 我会问这个问题。 @speller 两个答案都指向 tkinter.ttk。您还开始了您的问题“python 的 Tkinter、bwidget 或类似的东西有什么方法吗”,我认为答案不限于 Tkinter。无论如何,Bryan 让我说对了,看起来现代的 Tkinter 确实要好得多。 标题清楚地写着“python的Tkinter”。 bwidget 与 Tkinter 一起工作,只是为它添加功能,但如果我不清楚,我很抱歉。无论如何 - 我知道你们俩都不知道用 2.6 的 Tkinter 来做这件事 - 所以 thnx :) @speller 我只是想帮忙。像“如果我想知道我应该使用什么 python 模块来进行 GUI 编程——我会问这个问题”和“标题清楚地表明 python 的 Tkinter”这样的评论让我无法提供帮助。 好吧,对不起——我不是故意冒犯你的【参考方案2】:

如果您使用的是现代 (2.7+) 版本的 Tkinter,您可以尝试 ttk.ProgressBar,它是 Tkinter 的一部分。

【讨论】:

+1 感谢您直截了当地提出我过时的误解。【参考方案3】:

您可以单独安装pyttk 模块。

from Tkinter import *
import ttk
root = Tk()
progressbar = ttk.Progressbar(orient=HORIZONTAL, length=200, mode='determinate')
progressbar.pack(side="bottom")
progressbar.start()
root.mainloop()

就任务栏功能而言,这在 Tkinter 中尚不可用(至少据我所知)。为此,您需要使用 Windows API。尽管this question 是针对 PyQt 的,但答案应该会有所帮助。希望它能让你开始。

【讨论】:

哇!好了很多!但它看起来仍然与 Windows 显示的完全不一样。因此它也不会出现在我的任务栏中。你知道改善它的方法吗? @speller 更新了我的答案,为您的任务栏问题提供了更多信息。 好吧——非常有用。但我更关心进度条像普通窗口栏一样发光 - 你知道如何实现吗? 完成后如何让它停止? @JShoe:致电progressbar.stop()

以上是关于python的Tkinter中的Windows进度条的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上 Python 3.4 中的 Tkinter 不会在退出时将内部剪贴板数据发布到 Windows 剪贴板

在 Windows,Python3.8 上使用多处理时如何更新 tkinter 应用程序中的状态

Windows 上的 Python Tkinter? [复制]

Python GUI编程(Tkinter) windows界面开发

Python:在使用多处理时更新 Tkinter

控制台输出为 Tkinter 标签