PYQT5之界面和逻辑分离式设计

综述

在刚开始学习pyqt时,界面多是手写,所以会把界面设计和功能的实现写在同一个类里,导致代码过长,也不好修改。在qt中,一个界面分为ui文件和cpp文件,故我们可以在pyqt中用同样的方式。

界面

相当于ui文件

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Ui_XXX(QObject):
    def __init__(self):
        super(Ui_XXX, self).__init__()

    def setUi(self, form):
        '''为窗口设置UI

        :param form: 要设置的窗口
        :return:
        '''
        box = QHBoxLayout(form) 
        box.setSizeConstraint(QLayout.SetFixedSize) #窗口会随内容改变大小
        box.setContentsMargins(0, 0, 0, 0)
        box.setSpacing(0)
        self.wid = QWidget()
        box.addWidget(self.wid)
        
        self.retranslateUi(form)

    def retranslateUi(self, form):
        '''设置界面样式

        :param form: 界面
        :return: None
        '''
        self.wid.setStyleSheet('QWidget{background-color:#393C44;color:#ffffff;}')

用设计师完成界面

习惯使用qt designer设计界面的,也可以通过pyuic转换成py文件

pycharm添加designer

在Settings界面Tools->External Tools里添加designer工具
在这里插入图片描述
在Program里找到Anaconda安装目录下的Library\bin\designer.exe
Working directory里填$FileDir$即可
完成后即有
在这里插入图片描述

pycharm添加pyuic

同样的位置,添加pyuic
在这里插入图片描述
在Program里找到Anaconda安装目录下的envs\client\Scripts\pyuic5.exe
Arguments里填入
$FileName$ -o $FileNameWithoutExtension$.py
Working directory里填$ProjectFileDir$即可

转换ui文件

在设计师生成的ui文件上右键,如图:
在这里插入图片描述
点击pyuic即可生成同名py文件

逻辑

相当于cpp文件

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

from ui.Ui_xxx import Ui_XXX    #上面的界面文件

class XXX(QWidget, Ui_XXX):
    def __init__(self):
        super(XXX, self).__init__()
        Ui_XXX.__init__(self)
        self.setUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = XXX()
    mainWindow.show()
    sys.exit(app.exec_())

版权声明:本文为weixin_44515442原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。