0

我想在我的 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()
4

2 回答 2

1

如果您使用subprocess.Popen,您的主程序将继续运行而不会“阻塞”,直到子进程终止。

于 2012-03-28T15:41:58.647 回答
1

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

于 2012-03-28T15:43:16.290 回答