我正在使用pythonqt
设计界面,当我尝试使用os.system
调用我的程序时,界面会冻结。
def pairClicked(self,exp1,exp2):
os.system("""cd kat
./run -v pair""") #in the terminal i used to call my python interface, it runs this commands
os.system(exp1+" "+expr2) #but here nothing happens
一旦我终止了终端所说的程序(如果是exp1=t1
和exp2=t2
):
sh 1: t1 not found
sh 2: t2 not found
我做错了什么的意外/消极? 请注意,这是我第一次做这类事情。
修改
我编辑并使用了这段代码
p=subprocess.Popen(['cd','kat','./run', '-pair', str(test.__len__()),expr1Text,expr2Text],stdout=subprocess.PIPE,shell=True)
out= p.communicate()
print(out)
但它正在返回('',None)
。
我认为问题是我使用cd kat ./run -pair *len* expr1 expr2
之类的命令而不是:
cd kat
./run -pair *len*
expr1
expr2
如何使用子流程创建新行?
答案 0 :(得分:1)
听起来像./run正在阻止。
您可能需要生成异步子进程或者可能需要使用其他线程,因此您的GUI可以在./run运行时继续工作。