Tworzę skrypt w pythonie, który współpracuje z bash. Po ustawieniu wszystkich opcji wyszukiwania i naciśnięciu przycisku znajdowania, chciałbym wyświetlić okno wyskakujące z progress bar
, które zniknie, gdy wyszukiwanie zostanie zakończone. Otwieram popup window
przez popup.show()
i żadna funkcja nie jest wykonywana, dopóki nie zamknę popup. Jak rozwiązać ten problem?pygtk uruchamia dwa okna, wyskakujące i główne
W klasie kontrolera:
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)
W klasie Progressbar:
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
Złóż swój kod [SSCCE - krótki, samodzielny, prawidłowe (compilable) Przykład] (http://sscce.org/). Nie możemy uruchomić kodu, który masz w swoim pytaniu. Są tylko fragmentami części aplikacji. –