我想在我的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 :(得分:1)
如果使用subprocess.Popen
,主程序将继续运行而不会“阻塞”,直到子进程终止。
答案 1 :(得分:1)
os.system
将在子进程中运行命令并等待它在运行之前完成。如果您想与父进程并行运行它,那么您应该查看subprocess
模块 - 特别是,您将要创建一个subprocess.Popen
对象。