【发布时间】:2012-11-19 16:18:54
【问题描述】:
我在 python 中创建脚本,它与 bash 合作。当我设置所有搜索选项并按下查找按钮时,我想出现带有progress bar 的弹出窗口,当搜索完成时它会消失。我通过popup.show() 打开popup window 并且在关闭弹出窗口之前没有执行任何功能。那么如何解决这个问题呢?
在控制器类中:
def search(self, widget):
cmd = "find " + self.model.directory + " -name \"" + self.model.name + "\"" + " -perm -" + str(self.model.mode)
if self.model.type is not None and self.model.type != '':
cmd += " -type " + self.model.type
if self.model.owner is not None:
cmd += " -user " + self.model.owner
if self.model.days is not None:
cmd += " -mtime -" + str(self.model.days)
self.progress = SearcherProgressBar()
output = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
out = output.stdout.read().strip()
array = string.split(out, '\n')
self.list = list()
self.progress.label = "sdsds"
for value in array:
self.add_to_list(value)
#self.progress.popup.destroy() # when I uncomment, popup never appears
self.view.treestore.clear()
self.add_to_tree(self.list, None)
self.view.expand_item.set_sensitive(True)
在进度条类中:
class SearcherProgressBar:
def __init__(self):
self.popup = gtk.Window(gtk.WINDOW_POPUP)
vbox = gtk.VBox()
self.popup.add(vbox)
self.popup.set_size_request(500,100)
self.label = gtk.Label("Searching...")
vbox.pack_start(self.label, True, True, 0)
self.popup.connect("destroy", self.dest)
self.popup.show_all()
def dest(self, widget, data=None):
self.popup.destroy()
return False
【问题讨论】:
-
将您的代码设为SSCCE - Short, Self Contained, Correct (Compilable), Example。我们无法运行您在问题中的代码。它们只是您应用程序的一部分。
标签: python popup window progress-bar pygtk