import sys import os import tempfile import tecplot as tp from PyQt5 import QtWidgets, QtGui class ExecuteMacroCommand(QtWidgets.QWidget): def __init__(self): super(ExecuteMacroCommand, self).__init__() self.initUI() def initUI(self): self.macro_command_textEdit = QtWidgets.QTextEdit() self.macro_command_textEdit.setPlainText("#!MC 1410") addExecuteMacroCommand_Button = QtWidgets.QPushButton("Execute") addExecuteMacroCommand_Button.clicked.connect(self.execute_macro_command_CB) vbox = QtWidgets.QVBoxLayout() vbox.addWidget(self.macro_command_textEdit) vbox.addWidget(addExecuteMacroCommand_Button) self.setLayout(vbox) self.setGeometry(300, 300, 800, 600) self.setWindowTitle('Macro Command Runner') self.show() def execute_macro_command_CB(self, *a): cmd = self.macro_command_textEdit.toPlainText() try: temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mcr") temp_file.write(cmd.encode('utf8')) temp_file.flush() tp.macro.execute_file(temp_file.name) except Exception as e: error_dialog = QtWidgets.QMessageBox() error_dialog.setWindowTitle("Error") if str(e): error_dialog.setText("Error: {}".format(str(e))) else: error_dialog.setText("Error:\nNo error details available. ") error_dialog.exec_() finally: temp_file.close() os.unlink(temp_file.name) if __name__ == '__main__': try: tp.session.connect() app = QtWidgets.QApplication(sys.argv) ex = ExecuteMacroCommand() res = app.exec_() sys.exit(res) except Exception as e: log("Error") log(str(e))