最近在学习PyQt6,想通过类似QT那样去提升自定义的窗口部件,发现一些区别,特此记录一下。如有更方便的方法,请大家不吝赐教。
使用PyQt6提升窗口部件分为三个部分,自定义控件、提升控件、修改py文件、主窗口使用逻辑和整体软件初始化调用。
1、自定义控件部分
由于写了很多年QT代码了,这儿就不写了。
2、提升控件部分
提升自定义的两个窗口subWidget和subForm2,
一定要注意这里的文件名和类名的位置和路径,PyCharm和QT在这儿处理不一样,

在mainWidget提升了窗体之后呢,使用pyuic生成mainWidget.py文件。打开mainWiget会生成如下图的内容,如果运行不了,检查一下路径subForm2的路径,我是将mainWidget、subWidget和subForm2放在同一个目录下的。下图标注的路径和类名很关键,可能就是类名和路径导致运行不起来。

3、修改Py文件
但是这样在运行的时候,肯定还是有问题,需要进一步修改,他不想Qt会继承QWidget并自动创建构造函数,这儿继承的是object。需要安装如下截图更改,

4、主窗口使用逻辑
user_mainWidget.py文件主要是使用的逻辑了

5、整体软件初始化调用
main.py代码了
python
import Logic.use_mainWidget as use_untitled
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel ,QMessageBox
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
mainWindow = use_untitled.MainWindow()
mainWindow.showMaximized()
sys.exit(app.exec())
提升后的运行结果

方法二:

参考代码:
python
#use_mainWidget.py
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel ,QMessageBox
import UI.mainWidget as mainWidget
class MainWindow(QMainWindow, mainWidget.Ui_Form):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
# self.load_stylesheet("styles/style.css")
self.count = 0
self.setWindowTitle("first pyqt6 program")
self.pushButton.clicked.connect(self.btnClickedSlot)
def load_stylesheet(self, filename):
"""加载QSS样式文件"""
try:
with open(filename, 'r', encoding='utf-8') as file:
style = file.read()
self.setStyleSheet(style)
print(f"样式文件 {filename} 加载成功")
except FileNotFoundError:
print(f"错误:样式文件 {filename} 未找到")
except Exception as e:
print(f"加载样式文件时出错: {e}")
def btnClickedSlot(self):
self.count+=1
self.textEdit.append(f"点击了 {self.count} 次!")
新的py文件要重写构造函数
