2014-06-20 2 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() 
관련 문제