【问题标题】:PyQt4 - Open *.py file when Button is clickedPyQt4 - 单击按钮时打开 *.py 文件
【发布时间】:2014-06-20 12:29:20
【问题描述】:

当单击开始按钮时,我想用 pythonw.exe 打开/运行 *.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()

【问题讨论】:

    标签: python pyqt4 qtgui qtcore


    【解决方案1】:

    您可以使用subprocess.call。例如,这段代码运行external.py,当Start被点击时:

    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()
    

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多