如何在qt应用程序中包含脚本?

时间:2015-05-21 14:40:22

标签: python pyqt4

我正在尝试在GUI应用程序中使用四个不同的python脚本。

每个脚本都有大约500个代码行。然后我不想将每个完整的脚本作为函数包含在内。

这是应用程序的框架:

from FullConversor import *   #this is the .py gui  
import sys    
import datetime
import os
import pandas as pd
import shapefile as shp  
import csv  
import tkinter.filedialog


class FullConversorGUI(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.pushButtonConvert, QtCore.SIGNAL ('clicked()') ,self.conversor)
        QtCore.QObject.connect(self.ui.pushButtonClose, QtCore.SIGNAL ('clicked()') ,self.close)


    def conversor(self):
        if self.ui.radioButton1.isChecked()== True: 
            pass
        if self.ui.radioButton2.isChecked()== True:  
            pass
        if self.ui.radioButton3.isChecked()== True:  
            pass
        if self.ui.radioButton4.isChecked()== True: 
            pass


if __name__=='__main__':
    app = QtGui.QApplication(sys.argv)
    myapp = FullConversorGUI()
    myapp.show()
    sys.exit(app.exec_())

每个radioButton必须启动一个python脚本,只是一个单独运行的.py文件。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

在脚本上调用import,并在需要时运行它的main函数。

假装您有一个名为myscript.py

的脚本
# this is myscript.py

def main():
    # this function will be called from your gui. all your logic should be here.
    print "my script"

if __name__ == '__main__':
    # this function is called when you invoke the script from the command line. 
    main()

然后在你的gui ....

import myscript

if self.ui.radioButton1.isChecked()== True: 
    myscript.main()
    # continue after the script runs

这将导致以下输出到stdout:

my script

显然,你不会在myscript.py中只有一个print语句。你可以让它运行你想要的任何逻辑。