Oct-16-2016, 01:21 PM
Hi. For all the users that use Qt to make GUI, I've created a simple converter to help them convert the *.ui files to *.py files.
Unfortunately, I was unable to create an executable file, due to an error in cmd when I try to compile with py2exe, which I don't really know how to resolve. You will need pyqt4 to run the script.
Opinions and feedback are welcome.
Download link to Uploadfiles.io
Unfortunately, I was unable to create an executable file, due to an error in cmd when I try to compile with py2exe, which I don't really know how to resolve. You will need pyqt4 to run the script.
Error:C:\Users\Elder>python "F:\Converter User Interface to Python\Converter User Inte
rface to Python.py" py2exe
Traceback (most recent call last):
File "F:\Converter User Interface to Python\Converter User Interface to Python
.py", line 211, in <module>
ui.setupUi(hGUI)
File "F:\Converter User Interface to Python\Converter User Interface to Python
.py", line 139, in setupUi
self.retranslateUi(hGUI)
File "F:\Converter User Interface to Python\Converter User Interface to Python
.py", line 148, in retranslateUi
self.ln_destination.setText(_translate("hGUI", self.destination, None))
AttributeError: 'Ui_hGUI' object has no attribute 'destination'
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'C:/Users/Elder/Desktop/untitled.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost! __author__ = "Rares Munteanu" __version__ = "2.0.0" from PyQt4 import QtCore, QtGui from PyQt4.QtGui import * import os, ConfigParser try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_hGUI(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.browse_engine_file_title = "Browse Engine file" self.browse_engine_file_path = os.path.join(os.path.expanduser("~"), "Desktop") self.browse_engine_file_extensions = "Batch (*.bat)" self.browse_engine_file_found = None self.browse_user_interface_file_title = "Browse User Interface file" self.browse_user_interface_file_path = os.path.join(os.path.expanduser("~"), "Desktop") self.browse_user_interface_file_extensions = "User Interface (*.ui)" self.browse_user_interface_file_found = None self.browse_destination_title = "Browse Destination" self.browse_destination_path = os.path.join(os.path.expanduser("~"), "Desktop") self.settings_file = "settings.ini" self.engine_file = "" self.user_interface_file = "" self_destination = "" self.config_parser = ConfigParser.RawConfigParser() self.file_to_save = None self.first_of_all() def first_of_all(self): if os.path.isfile(self.settings_file): # searches for "cvpsettings.ini", the "ini" extension is necessary! self.config_parser.read(self.settings_file) # "ini" extension is necessary! self.engine_file = self.config_parser.get("PATHS", "engine") self.destination = self.config_parser.get("PATHS", "destination") def setupUi(self, hGUI): hGUI.setObjectName(_fromUtf8("hGUI")) hGUI.resize(333, 300) hGUI.setMinimumSize(QtCore.QSize(333, 300)) hGUI.setMaximumSize(QtCore.QSize(333, 300)) self.label_4 = QtGui.QLabel(hGUI) self.label_4.setGeometry(QtCore.QRect(10, 10, 311, 16)) self.label_4.setObjectName(_fromUtf8("label_4")) self.groupBox_2 = QtGui.QGroupBox(hGUI) self.groupBox_2.setGeometry(QtCore.QRect(10, 40, 311, 251)) self.groupBox_2.setTitle(_fromUtf8("")) self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) self.label = QtGui.QLabel(self.groupBox_2) self.label.setGeometry(QtCore.QRect(10, 10, 291, 16)) self.label.setObjectName(_fromUtf8("label")) self.label_2 = QtGui.QLabel(self.groupBox_2) self.label_2.setGeometry(QtCore.QRect(10, 60, 291, 16)) self.label_2.setObjectName(_fromUtf8("label_2")) self.ln_user_interface_file = QtGui.QLineEdit(self.groupBox_2) self.ln_user_interface_file.setGeometry(QtCore.QRect(10, 80, 241, 20)) self.ln_user_interface_file.setObjectName(_fromUtf8("ln_user_interface_file")) self.ln_destination = QtGui.QLineEdit(self.groupBox_2) self.ln_destination.setGeometry(QtCore.QRect(10, 130, 241, 20)) self.ln_destination.setObjectName(_fromUtf8("ln_destination")) self.ln_engine_file = QtGui.QLineEdit(self.groupBox_2) self.ln_engine_file.setGeometry(QtCore.QRect(10, 30, 241, 20)) self.ln_engine_file.setObjectName(_fromUtf8("ln_engine_file")) self.groupBox = QtGui.QGroupBox(self.groupBox_2) self.groupBox.setGeometry(QtCore.QRect(10, 170, 271, 41)) self.groupBox.setTitle(_fromUtf8("")) self.groupBox.setObjectName(_fromUtf8("groupBox")) self.label_3 = QtGui.QLabel(self.groupBox) self.label_3.setGeometry(QtCore.QRect(10, 10, 211, 21)) self.label_3.setObjectName(_fromUtf8("label_3")) self.btn_save_settings = QtGui.QPushButton(self.groupBox) self.btn_save_settings.setGeometry(QtCore.QRect(220, 10, 41, 23)) self.btn_save_settings.setText(_fromUtf8("")) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(_fromUtf8("save.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.btn_save_settings.setIcon(icon) self.btn_save_settings.setObjectName(_fromUtf8("btn_save_settings")) self.btn_browse_engine_file = QtGui.QPushButton(self.groupBox_2) self.btn_browse_engine_file.setGeometry(QtCore.QRect(260, 30, 41, 20)) self.btn_browse_engine_file.setText(_fromUtf8("")) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(_fromUtf8("search.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.btn_browse_engine_file.setIcon(icon1) self.btn_browse_engine_file.setIconSize(QtCore.QSize(13, 13)) self.btn_browse_engine_file.setObjectName(_fromUtf8("btn_browse_engine_file")) self.btn_browse_user_interface_file = QtGui.QPushButton(self.groupBox_2) self.btn_browse_user_interface_file.setGeometry(QtCore.QRect(260, 80, 41, 20)) self.btn_browse_user_interface_file.setText(_fromUtf8("")) self.btn_browse_user_interface_file.setIcon(icon1) self.btn_browse_user_interface_file.setIconSize(QtCore.QSize(13, 13)) self.btn_browse_user_interface_file.setObjectName(_fromUtf8("btn_browse_user_interface_file")) self.label_5 = QtGui.QLabel(self.groupBox_2) self.label_5.setGeometry(QtCore.QRect(10, 110, 291, 16)) self.label_5.setObjectName(_fromUtf8("label_5")) self.btn_browse_destination = QtGui.QPushButton(self.groupBox_2) self.btn_browse_destination.setGeometry(QtCore.QRect(260, 130, 41, 20)) self.btn_browse_destination.setText(_fromUtf8("")) self.btn_browse_destination.setIcon(icon1) self.btn_browse_destination.setIconSize(QtCore.QSize(13, 13)) self.btn_browse_destination.setObjectName(_fromUtf8("btn_browse_destination")) self.btn_convert = QtGui.QPushButton(self.groupBox_2) self.btn_convert.setGeometry(QtCore.QRect(20, 220, 101, 23)) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(_fromUtf8("correct.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.btn_convert.setIcon(icon2) self.btn_convert.setObjectName(_fromUtf8("btn_convert")) self.lbl_status = QtGui.QLabel(self.groupBox_2) self.lbl_status.setGeometry(QtCore.QRect(130, 223, 171, 20)) self.lbl_status.setAlignment(QtCore.Qt.AlignCenter) self.lbl_status.setObjectName(_fromUtf8("lbl_status")) self.retranslateUi(hGUI) QtCore.QMetaObject.connectSlotsByName(hGUI) def retranslateUi(self, hGUI): hGUI.setWindowTitle(_translate("hGUI", "Converter: User Interface to Python", None)) self.label_4.setText(_translate("hGUI", "<html><head/><body><p>A simple <span style=\" font-weight:600;\">User Interface</span> (<span style=\" font-weight:600;\">*.ui</span>) to <span style=\" font-weight:600;\">Python</span> (<span style=\" font-weight:600;\">*.py</span>) converter.</p></body></html>", None)) self.label.setText(_translate("hGUI", "<html><head/><body><p>Engine file (<span style=\" font-weight:600;\">*.bat</span>) - the pyuic4.bat file</p></body></html>", None)) self.label_2.setText(_translate("hGUI", "<html><head/><body><p>User Interface file (<span style=\" font-weight:600;\">*.ui</span>) - the file you want to convert</p></body></html>", None)) self.ln_user_interface_file.setText(_translate("hGUI", self.user_interface_file, None)) self.ln_destination.setText(_translate("hGUI", self.destination, None)) self.ln_engine_file.setText(_translate("hGUI", self.engine_file, None)) self.label_3.setText(_translate("hGUI", "<html><head/><body><p>Save <span style=\" font-weight:600;\">Engine file</span> and <span style=\" font-weight:600;\">Destination</span> paths</p></body></html>", None)) self.btn_save_settings.setToolTip(_translate("hGUI", "Save <b>Engine</b> and <b>Destination</b> path to <b>" + self.settings_file + "</b>", None)) self.btn_browse_engine_file.setToolTip(_translate("hGUI", "Browse <b>Engine</b> file", None)) self.btn_browse_user_interface_file.setToolTip(_translate("hGUI", "Browse <b>User Interface</b> file", None)) self.label_5.setText(_translate("hGUI", "Destination - where to save the converted file", None)) self.btn_browse_destination.setToolTip(_translate("hGUI", "Browse <b>Destination</b>", None)) self.btn_convert.setToolTip(_translate("hGUI", "Convert <b>User Interface</b> file", None)) self.btn_convert.setText(_translate("hGUI", "Convert", None)) self.lbl_status.setText(_translate("hGUI", "Click on \"<b>Convert</b>\" to... convert.", None)) self.btn_browse_engine_file.clicked.connect(self.browse_engine_file) self.btn_browse_user_interface_file.clicked.connect(self.browse_user_interface_file) self.btn_browse_destination.clicked.connect(self.browse_destination) self.btn_save_settings.clicked.connect(self.save_settings) self.btn_convert.clicked.connect(self.convert) def browse_engine_file(self): self.browse_engine_file_found = QFileDialog.getOpenFileName(hGUI, self.browse_engine_file_title, self.browse_engine_file_path, self.browse_engine_file_extensions) if self.browse_engine_file_found: self.ln_engine_file.setText(self.browse_engine_file_found) def browse_user_interface_file(self): self.browse_user_interface_file_found = QFileDialog.getOpenFileName(hGUI, self.browse_user_interface_file_title, self.browse_user_interface_file_path, self.browse_user_interface_file_extensions) if self.browse_user_interface_file_found: self.ln_user_interface_file.setText(self.browse_user_interface_file_found) def browse_destination(self): self.browse_destination_found = QFileDialog.getExistingDirectory(hGUI, self.browse_destination_title, self.browse_destination_path) if self.browse_destination_found: self.ln_destination.setText(self.browse_destination_found) def save_settings(self): self.file_to_save = open(self.settings_file, "w") self.engine_file = self.ln_engine_file.text() self.destination = self.ln_destination.text() self.config_parser.set("PATHS", "engine", self.engine_file) self.config_parser.set("PATHS", "destination", self.destination) self.config_parser.write(self.file_to_save) self.file_to_save.close() self.lbl_status.setText("Settings saved.") def convert(self): if str(self.ln_engine_file.text()) == " " or str(self.ln_user_interface_file.text()) == " " or str(self.ln_destination.text()) == " ": os.system(str(self.ln_engine_file.text()) + ' -o "' + str(self.ln_destination.text()) + "\\convertedfile.py"'" "' + str(self.ln_user_interface_file.text()) + '"') self.lbl_status.setText("Converted to <b>convertedfile.py</b>.") else: self.lbl_status.setText("Path missing.") if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) hGUI = QtGui.QWidget() ui = Ui_hGUI() ui.setupUi(hGUI) hGUI.show() sys.exit(app.exec_())I've provided a link where you can download an archive containing the source code, *.png pictures necessary for buttons and a *.ini file that will contain some paths set by you (can't attach files).
Opinions and feedback are welcome.
Download link to Uploadfiles.io