Ich kann nicht herausfinden, warum meine benutzerdefinierten Slots, die ich im QT-Ersteller erstellt habe, nicht in der transformierten Python-Datei enthalten sind. Grundsätzlich pyuic berücksichtigt nicht die .cpp
Datei. Alle dort vorgenommenen Änderungen sind nicht in der späteren Datei .py
enthalten.pyuic von PyQT berücksichtigt keine benutzerdefinierten Slots
Zum Beispiel meiner .cpp
Datei zeigt diesen Teil:
void MainWindow::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,
"Open xls File", ".", "xls files (*.xls)");
if (fileName.isEmpty())
return;
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
}
jedoch die Python-Datei nicht diese Klasse oder irgendetwas nicht nennen, die in der .cpp
Datei.
Meine Python-Datei sieht wie folgt aus:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(486, 300)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.radioButton = QtWidgets.QRadioButton(self.centralWidget)
self.radioButton.setGeometry(QtCore.QRect(10, 40, 100, 22))
self.radioButton.setChecked(True)
self.radioButton.setObjectName("radioButton")
self.radioButton_2 = QtWidgets.QRadioButton(self.centralWidget)
self.radioButton_2.setGeometry(QtCore.QRect(10, 90, 121, 22))
self.radioButton_2.setObjectName("radioButton_2")
self.pushButton = QtWidgets.QPushButton(self.centralWidget)
self.pushButton.setGeometry(QtCore.QRect(370, 90, 85, 27))
self.pushButton.setObjectName("pushButton")
self.lineEdit = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit.setGeometry(QtCore.QRect(130, 40, 211, 27))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit2 = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit2.setGeometry(QtCore.QRect(130, 90, 211, 27))
self.lineEdit2.setObjectName("lineEdit2")
self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
self.pushButton_2.setGeometry(QtCore.QRect(370, 200, 85, 27))
self.pushButton_2.setObjectName("pushButton_2")
self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralWidget)
self.plainTextEdit.setGeometry(QtCore.QRect(130, 130, 211, 91))
self.plainTextEdit.setObjectName("plainTextEdit")
self.label = QtWidgets.QLabel(self.centralWidget)
self.label.setGeometry(QtCore.QRect(370, 130, 91, 31))
self.label.setObjectName("label")
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 486, 27))
self.menuBar.setObjectName("menuBar")
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtWidgets.QToolBar(MainWindow)
self.mainToolBar.setObjectName("mainToolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
MainWindow.insertToolBarBreak(self.mainToolBar)
self.statusBar = QtWidgets.QStatusBar(MainWindow)
self.statusBar.setObjectName("statusBar")
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
self.radioButton.toggled['bool'].connect(self.lineEdit.setEnabled)
self.radioButton.toggled['bool'].connect(self.lineEdit2.setDisabled)
self.radioButton_2.toggled['bool'].connect(self.lineEdit.setDisabled)
self.radioButton_2.toggled['bool'].connect(self.lineEdit2.setEnabled)
self.radioButton.toggled['bool'].connect(self.pushButton.setDisabled)
self.radioButton_2.toggled['bool'].connect(self.pushButton.setEnabled)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.radioButton.setText(_translate("MainWindow", "Single SMS"))
self.radioButton_2.setText(_translate("MainWindow", "SMS to Contacts"))
self.pushButton.setText(_translate("MainWindow", "Add .xls"))
self.pushButton_2.setText(_translate("MainWindow", "Send it!"))
self.label.setText(_translate("MainWindow", "Message Text"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Ist eine Lösung für dieses jemand weiß? Gibt es eine Möglichkeit, das gesamte Projekt in Python und nicht nur die Datei .ui
zu übersetzen?
Vielen Dank im Voraus
No - pyuic konvertiert nur die .ui - Datei. Außerdem gibt es keine Tools von Drittanbietern, die beliebigen C++ - Code in Python-Code übersetzen können. Ich schlage vor, dass Sie nur lernen, wie Sie die Portierung selbst durchführen (es ist nicht besonders schwierig). – ekhumoro