1.新建Python项目
使用QtDesigner设计界面
使用PyUIC把设计的界面转换成py文件
编写业务代码和Ui文件结合起来
SetTextStyleMainWindow.py
import sys
from SetTextStyle import Ui_SetTextStyle
from PyQt5.QtWidgets import QMainWindow, QApplication, QCheckBox, QSpinBox
from PyQt5.QtGui import QPen, QPalette, QFont
from PyQt5.QtCore import Qt, pyqtSlot
class SetTextStyleMainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.__ui = Ui_SetTextStyle()
self.__ui.setupUi(self)
self.setWindowModality(Qt.ApplicationModal)
self.__ui.radioButtonRed.clicked.connect(self.slotBtnRed)
self.__ui.radioButtonBlue.clicked.connect(self.slotBtnBlue)
self.__ui.radioButtonGreen.clicked.connect(self.slotBtnGreen)
self.__ui.checkBox.stateChanged.connect(self.slotItalicFont)
self.__ui.spinBox.valueChanged.connect(self.slotFontSize)
@pyqtSlot(bool)
def slotBtnRed(self, checked):
strText = self.__ui.textEdit.palette()
strText.setColor(QPalette.Text, Qt.red)
self.__ui.textEdit.setPalette(strText)
@pyqtSlot(bool)
def slotBtnBlue(self, checked):
strText = self.__ui.textEdit.palette()
strText.setColor(QPalette.Text, Qt.blue)
self.__ui.textEdit.setPalette(strText)
@pyqtSlot(bool)
def slotBtnGreen(self, checked):
strText = self.__ui.textEdit.palette()
strText.setColor(QPalette.Text, Qt.green)
self.__ui.textEdit.setPalette(strText)
def slotItalicFont(self, checked):
if checked == 0:
b = False
else:
b = True
self.__ui.textEdit.setFontItalic(b)
@pyqtSlot(int)
def slotFontSize(self, size):
self.__ui.textEdit.setFontPointSize(size)
mainWindow = SetTextStyleMainWindow()
def getMainWindow():
#mainWindow.setWindowModality(Qt.ApplicationModal)
mainWindow.show()
'''
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = SetTextStyleMainWindow()
mainWindow.show()
sys.exit(app.exec_())
'''
2.编写C++
Py_Initialize();
if (!Py_IsInitialized()) {
return;
}
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.argv = ['python.py']");
PyRun_SimpleString("sys.path.append('./')");
_moudel = PyImport_ImportModule("SetTextStyleMainWindow");
if (_moudel == nullptr) {
PyErr_PrintEx(0);
} else {
PyObject * pFunc = NULL;
PyObject* pDict = NULL;
PyObject* pClass = NULL;
PyObject* pIns = NULL;
pDict = PyModule_GetDict(_moudel);
assert(pDict != NULL);
pClass = PyDict_GetItemString(pDict, "getMainWindow");
assert(pClass != NULL);
pIns = PyObject_CallObject(pClass, nullptr);
assert(pIns != NULL);
}
Py_Finalize();
注意:要把
#include "Python.h"
放到Cpp文件的第一行,否则编译就会出错!
要把SetTextStyleMainWindow.py放到可执行目录下
aaa