2014-06-20 78 views
1

当单击开始按钮时,我想用pythonw.exe打开/运行* .py文件。谁能告诉我这是如何工作的?我没有找到正确的功能。PyQt4 - 单击按钮时打开* .py文件

import sys 
from PyQt4 import QtGui, QtCore 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 

    def initUI(self): 

     QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) 

     self.setToolTip('This is a <b>QWidget</b> widget') 

     btn1 = QtGui.QPushButton('Start', self) 

     # OPENFILE SOMEHOW!! 
     btn1.resize(btn1.sizeHint()) 
     btn1.move(20, 20)  



     qbtn = QtGui.QPushButton('Quit', self) 
     qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit) 
     qbtn.resize(qbtn.sizeHint()) 
     qbtn.move(150, 20) 

     self.setGeometry(300, 300, 250, 150) 
     self.setWindowTitle('Python Script')  
     self.show() 

def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

回答

0

您可以使用subprocess.call。例如,此代码在点击Start时运行external.py

import sys 
from PyQt4 import QtGui, QtCore 
import subprocess 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 


    def run(self, path): 
     subprocess.call(['pythonw',path]) 

    def initUI(self): 

     QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) 

     self.setToolTip('This is a <b>QWidget</b> widget') 

     btn1 = QtGui.QPushButton('Start', self) 


     btn1.resize(btn1.sizeHint()) 
     btn1.move(20, 20) 

     btn1.clicked.connect(lambda:self.run('external.py')) 

     qbtn = QtGui.QPushButton('Quit', self) 
     qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit) 
     qbtn.resize(qbtn.sizeHint()) 
     qbtn.move(150, 20) 

     self.setGeometry(300, 300, 250, 150) 
     self.setWindowTitle('Python Script') 

     #subprocess.call(['pythonw','3.py']) 
     self.show() 



def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main()