2012-03-28 138 views
0

我想在我的python代码中进行系统调用,但问题是它打破了我原来的代码序列。python系统调用

def call_host(self): 
    self.builder.get_object("windowMain").show()   
    os.system('python Adder.py') 
    self.builder.get_object("window1").show() 
上面pygtk的代码,一旦Adder.py被称为下一行不会执行,我想系统执行adder.py,回来我的原代码

... 日Thnx提前

这里是我的对于Adder.py

代码
import sys 
try: 
    import pygtk 
    pygtk.require("2.0") 
except: 
    pass 
try: 
    import gtk 
except: 
    print("GTK Not Availible") 
    sys.exit(1) 

class adder: 
    result = 0 

    def __init__(self, number1, number2):  
     return None    

    def giveResult(self,number1,number2):  
     self.result = int(number1) + int(number2)  
     return str(self.result) 

class adderGui:  
    def __init__(self):  
     self.builder = gtk.Builder()  
     self.builder.add_from_file("Adder.glade") 

     dic = { 
      "on_buttonQuit_clicked" : self.quit,  
      "on_buttonAdd_clicked" : self.add,  
      "on_windowMain_destroy" : self.quit,  
     } 

     self.builder.connect_signals(dic) 

    def add(self, widget):  
     entry1 = self.builder.get_object ("entry1")  
     entry2 = self.builder.get_object ("entry2") 

     try:  
      thistime = adder(entry1.get_text(), entry2.get_text()) 
     except ValueError:  
      self.builder.get_object("hboxWarning").show()  
      self.builder.get_object("entryResult").set_text("ERROR")  
      return 0 

     self.builder.get_object("hboxWarning").show() 

     #self.builder.get_object("image1").hide() 

     self.builder.get_object("entryResult").set_text(
      thistime.giveResult(entry1.get_text(), entry2.get_text()) 
     ) 

    def quit(self, widget):  
     sys.exit(0) 

adderGui = adderGui()  
gtk.main() 
+0

太多的代码... – 2012-03-28 15:38:46

+0

为什么Adder.py的代码很重要?难道它不是任何脚本? – 2012-03-28 16:29:43

回答

1

如果使用subprocess.Popen,主程序将继续而不“堵”,直到子终止运行。

1

os.system将在子进程中运行一个命令并等待它在运行前完成。如果您想要与父进程并行运行,那么您应该查看subprocess模块 - 特别是,您需要创建一个subprocess.Popen对象。