Tôi đang tạo tập lệnh trong python, hợp tác với bash. Khi tôi đặt tất cả các tùy chọn tìm kiếm và nhấn nút tìm, tôi muốn xuất hiện cửa sổ bật lên với progress bar
, biến mất khi tìm kiếm sẽ hoàn tất. Tôi mở popup window
bởi popup.show()
và không có chức năng nào được thực thi cho đến khi tôi đóng cửa sổ bật lên. Vậy làm thế nào để giải quyết vấn đề này?pygtk đang chạy hai cửa sổ, cửa sổ bật lên và chính
Trong lớp điều khiển:
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)
Trong lớp 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
Make mã của bạn [SSCCE - Ngắn, khép kín, chính xác (compilable), Ví dụ] (http://sscce.org/). Chúng tôi không thể chạy mã bạn có trong câu hỏi của mình. Chúng chỉ là những phần của ứng dụng của bạn. –