QTクリエイターで作成したカスタムスロットが変換されたpythonファイルでない理由がわかりません。基本的にpyuicは、.cpp
ファイルを考慮しません。そこに加えられた変更は、後で.py
ファイルにはありません。PyQTのpyuicはカスタムスロットを考慮していません
例えば私の.cpp
ファイルには、この部分を示しています
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;
}
Pythonのファイルはこのクラスまたは.cpp
ファイルにある何かを呼び出すことはありませんが。
私のpythonファイルには、次のようになります。
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_())
は、誰もがこのための解決策を知っていますか? .ui
ファイルだけでなく、プロジェクト全体をPythonに変換する方法はありますか?事前
いいえpyuicは.uiファイルのみを変換します。また、任意のC++コードをPythonコードに変換できるサードパーティのツールはありません。私は、自分で移植する方法を学ぶことをお勧めします(特に難しいことではありません)。 – ekhumoro