Hello everyone. I've created another User Interface to Python converter (you can find the first one here, though I don't recommend it, it's ugly), this one's more simple and comfortable. Literally all you have to do is drag the *.ui file and drop it in the square, the *.py file will be generated in the directory that you choose (Desktop by default). I've attached the icon, even thought it's not necessary, and also, the program will create a "settings.txt" file, which contains the path where the generated file should be saved.
Here's the code:
Thanks and enjoy!
Edit:
For some reason, the code is not indented, here's a gist.
Here's the code:
from PyQt5 import QtCore, QtGui, QtWidgets from pathlib import Path import os savePath = "" settingsFilePath = Path("settings.txt") if not settingsFilePath.is_file(): f = open("settings.txt", "w") savePath = os.environ["HOMEPATH"] + "\\Desktop\\" f.write(savePath) f.close() else: f = open("settings.txt", "r") savePath = f.readline() f.close() def convertToPy(target): os.system('pyuic5 -o "' + savePath + '/convertedfile.py" "' + target + '"') class Label(QtWidgets.QLabel): def __init__(self): super(Label, self).__init__() self.setAcceptDrops(True) def dragEnterEvent(self, e): if e.mimeData().hasFormat("text/uri-list"): e.accept() else: e.ignore() def dropEvent(self, e): convertToPy(e.mimeData().text()[8:]) class MainWindow(QtWidgets.QWidget): def __init__(self): super().__init__() self.windowTitle = "Converter: User Interface to Python" self.windowSize = (438, 348) self.setupUi(self) def setupUi(self, Form): Form.setObjectName("Form") Form.setWindowTitle(self.windowTitle) Form.resize(self.windowSize[0], self.windowSize[1]) self.verticalLayout_2 = QtWidgets.QVBoxLayout(Form) self.verticalLayout_2.setObjectName("verticalLayout_2") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.frame = QtWidgets.QFrame(Form) self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame.setFrameShadow(QtWidgets.QFrame.Raised) self.frame.setObjectName("frame") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.frame) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.labelIcon = QtWidgets.QLabel(self.frame) self.labelIcon.setMaximumSize(QtCore.QSize(50, 50)) self.labelIcon.setText("") self.labelIcon.setPixmap(QtGui.QPixmap("info.png")) self.labelIcon.setScaledContents(True) self.labelIcon.setObjectName("labelIcon") self.horizontalLayout.addWidget(self.labelIcon) self.labelInfo = QtWidgets.QLabel(self.frame) self.labelInfo.setWordWrap(True) self.labelInfo.setObjectName("labelInfo") self.labelInfo.setText("Before converting, please make sure that you have PyQt5 installed. To install PyQt5, you can visit <a href='https://sourceforge.net/projects/pyqt/'>this link</a> to download it, or run the following command in <b>cmd</b>: <font face='Consolas'>pip3 install PyQt5</font>") self.labelInfo.setOpenExternalLinks(True) self.horizontalLayout.addWidget(self.labelInfo) self.horizontalLayout_2.addLayout(self.horizontalLayout) self.verticalLayout.addWidget(self.frame) self.frame_2 = QtWidgets.QFrame(Form) self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised) self.frame_2.setObjectName("frame_2") self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.frame_2) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.verticalLayout_5 = QtWidgets.QVBoxLayout() self.verticalLayout_5.setObjectName("verticalLayout_5") #self.labelTarget = QtWidgets.QLabel(self.frame_2) -> removed, as I'm going to use a custom Label self.labelTarget = Label() font = QtGui.QFont() font.setFamily("Myanmar Text") self.labelTarget.setFont(font) self.labelTarget.setAlignment(QtCore.Qt.AlignCenter) self.labelTarget.setObjectName("labelTarget") self.labelTarget.setText("Drag and drop the <b>user interface</b> (<b>*.ui</b>) file here") self.labelTarget.setStyleSheet("QLabel { border: 1px dotted black; }") self.labelTarget.setMinimumHeight(150) self.labelTarget.setAcceptDrops(True) self.verticalLayout_5.addWidget(self.labelTarget) self.horizontalLayout_3.addLayout(self.verticalLayout_5) self.verticalLayout.addWidget(self.frame_2) self.frame_3 = QtWidgets.QFrame(Form) self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised) self.frame_3.setObjectName("frame_3") self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.frame_3) self.verticalLayout_4.setObjectName("verticalLayout_4") self.verticalLayout_3 = QtWidgets.QVBoxLayout() self.verticalLayout_3.setObjectName("verticalLayout_3") self.labelQuestion = QtWidgets.QLabel(self.frame_3) self.labelQuestion.setObjectName("labelQuestion") self.labelQuestion.setText("Where should the <b>python</b> file be saved at?") self.verticalLayout_3.addWidget(self.labelQuestion) self.frame_4 = QtWidgets.QFrame(self.frame_3) self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised) self.frame_4.setObjectName("frame_4") self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.frame_4) self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.inputDirectory = QtWidgets.QLineEdit(self.frame_4) self.inputDirectory.setObjectName("inputDirectory") self.inputDirectory.setText(savePath) self.inputDirectory.setStyleSheet("QLineEdit { padding-bottom: 2px; padding-left: 2px; }") self.horizontalLayout_5.addWidget(self.inputDirectory) self.buttonBrowse = QtWidgets.QPushButton(self.frame_4) self.buttonBrowse.setObjectName("buttonBrowse") self.buttonBrowse.setText("Browse") self.horizontalLayout_5.addWidget(self.buttonBrowse) self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.horizontalLayout_5.addLayout(self.horizontalLayout_4) self.verticalLayout_3.addWidget(self.frame_4) self.verticalLayout_4.addLayout(self.verticalLayout_3) self.verticalLayout.addWidget(self.frame_3) self.verticalLayout_2.addLayout(self.verticalLayout) QtCore.QMetaObject.connectSlotsByName(Form) self.buttonBrowse.clicked.connect(self.browsePath) def browsePath(self): savePath = str(QtWidgets.QFileDialog.getExistingDirectory(self, "Select directory")) self.inputDirectory.setText(savePath) with open(settingsFilePath, "w") as f: f.write(savePath) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) hGUI = QtWidgets.QWidget() ui = MainWindow() ui.setupUi(hGUI) hGUI.show() sys.exit(app.exec_())As always, I want to hear your opinion, did I do a good job? Please do comment on my code.
Thanks and enjoy!

Edit:
For some reason, the code is not indented, here's a gist.