В моем приложении pygtk я хочу закрыть текущее окно после открытия следующего окна.Открытие второго окна перед закрытием 1-го окна в pygtk
это код, который я написал
#!/usr/bin/env python
# example base.py
import pygtk
pygtk.require('2.0')
import gtk
import subprocess
class Base:
def next(self,widget):
subprocess.call('fabfile.py', shell=True)
self.window.destroy()
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_size_request(200,200)
self.button = gtk.Button("Next")
self.button.show()
self.button.connect("clicked", self.next)
self.window.add(self.button)
self.window.show()
def main(self):
gtk.main()
print __name__
if __name__ == "__main__":
base = Base()
base.main()
, когда я нажимаю на следующей кнопке открывает следующее окно, но не закрывает мое текущее окно в фоновом режиме и текущее окно идет висеть в фоновом режиме после открытия следующего окно.
def next(self,widget):
subprocess.call("fabfile.py", shell=True)
self.win.destroy()
, когда я запускаю этот код в
window machine
он не закрывает существующее окно и
Linux machine
он дает эту ошибку.
/bin/sh: fabfile.py: command not found
Любой, дайте мне знать, как решить эту проблему. Спасибо ...
on linux: 'subprocess.call ('fabfile.py', shell = True)' должен быть 'subprocess.call ('. \ Fabfile.py', shell = True)'. Это связано с тем, что текущий рабочий каталог не включается при поиске сценария. – cstrutton
Я пробовал с предложением ur, но он дает такую же ошибку. любая другая идея, которую вы имеете для разрешения. – Amit
@cstrutton: '' \ f'' - это один символ (ASCII Formfeed). Вам нужно избегать обратной косой черты, например, используя строковый литерал 'r '\ f'' (два символа). В любом случае вы могли бы означать '../Local_command'' (если вы не в Windows). И обычно 'fabfile.py' не вызывается напрямую, а используется команда' fab'. 'subprocess.Popen ('fab')' запускает команду 'fab', не дожидаясь ее завершения. – jfs