我一直在为自己创建一个程序,我的公司最近想要使用它。然而,最终用户没有python经验,所以我使用EasyGUI为他们制作GUI。他们所要做的就是单击桌面上的快捷方式(我使用pythonw.exe,因此不显示任何框)。该过程大约需要10秒钟才能运行,但这样做时会出现空白屏幕。
我的问题是:我可以在消息框中显示"正在运行..."函数运行然后在整个过程完成时关闭?
奖励积分:在流程运行时设置进度条。
现在我已经做了一些搜索但是其中一些东西已经超出了我的想法(我对Python很新)。我不确定如何将这些部分合并到我的代码中。是否有任何像EasyGUI一样容易解决我的问题?谢谢!
相关文章: Python- Displaying a message box that can be closed in the code (no user intervention)
How to pop up a message while processing - python
Python to print out status bar and percentage
如果您绝对需要查看我的代码,我可以尝试重新创建它而不会泄露信息。上级人员会很感激我没有泄露有关这个项目的信息 - 安全性很紧张。
答案 0 :(得分:2)
我为你写了一个小演示。不知道它是不是你想要的...... 该代码使用线程来更新进度条,同时执行其他操作。
import time
import threading
try:
import Tkinter as tkinter
import ttk
except ImportError:
import tkinter
from tkinter import ttk
class GUI(object):
def __init__(self):
self.root = tkinter.Tk()
self.progbar = ttk.Progressbar(self.root)
self.progbar.config(maximum=10, mode='determinate')
self.progbar.pack()
self.i = 0
self.b_start = ttk.Button(self.root, text='Start')
self.b_start['command'] = self.start_thread
self.b_start.pack()
def start_thread(self):
self.b_start['state'] = 'disable'
self.work_thread = threading.Thread(target=work)
self.work_thread.start()
self.root.after(50, self.check_thread)
self.root.after(50, self.update)
def check_thread(self):
if self.work_thread.is_alive():
self.root.after(50, self.check_thread)
else:
self.root.destroy()
def update(self):
#Updates the progressbar
self.progbar["value"] = self.i
if self.work_thread.is_alive():
self.root.after(50, self.update)#method is called all 50ms
gui = GUI()
def work():
#Do your work :D
for i in range(11):
gui.i = i
time.sleep(0.1)
gui.root.mainloop()
如果有帮助,请告诉我:)。