pyqt5+designer完成简单图形程序

之前的界面都是think,很多功能都无法实现,这是自己第一次想使用pyqt来对界面进行布局。

  • 首先pyqt无法conda安装,会找不到环境,但是在pycharm中可以在setting里面直接安装。
  • 安装好之后可以在win10自带的搜索里输入designer,就可以打开designer。

在这里插入图片描述

  • 左边的组件栏可以直接拖动放到右边,注意如果想拖动的是layout,还需要再把组件拖入layout中。布局中选中的组件,可以在右边查看属性。但是注意这里下面修改的属性,会影响同一类的全部组件,不要轻易在这里修改。
    在这里插入图片描述
    如果想要修改当前组件的样式,应该右键该组件,改变样式表,然后通过css来改变这个组件的样式。
    在这里插入图片描述
    在这里插入图片描述
  • 完成之后另存为ui文件到当前项目的文件夹内,然后转换成py文件:pyuic5 -o designer.py designer.ui,当前目录下就会出现designer.py文件。
    在这里插入图片描述
    designer下点击边框的属性——objecName 就是转换成py文件之后的类名。
    在这里插入图片描述
    在这里插入图片描述
  • 但是这个文件不能单独使用,需要在main.js里面引入。这一步引入出错花了我很多时间!
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from Ui_MainWindow import  *

class Demo(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(Demo, self).__init__()
        # 将UI界面布局到Demo上;
        self.setupUi(self)

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

我被这个错误坑了很久:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases 。

一直显示我这句是有问题:class Demo(QMainWindow, Ui_MainWindow):
QMainWindow和Ui_MainWindow继承了不同的父类导致出错。但是问题其实不是这一句,而是我引入出了问题。
我一开始是直接引入了:import Ui_MainWindow,因为这个包名确实是存在的所以不会报错,但是一个很严重的问题是,这里不是def而是个class,那不是相当于引入了个寂寞吗!所以被我改成了from Ui_MainWindow import *问题解决!
在这里插入图片描述

  • 但是接下来的问题是我的程序不是自适应布局,并且失去了颜色。不是自适应布局是因为我没有加底层布局,下面这些都是平级的。加底层布局很简单,只需要在空白处右键→布局→栅格布局
    在这里插入图片描述
    但是此时你会发现,刚刚布局好的比例发生了变化,这是因为默认的栅格布局是等比例的,每一个组件都会被等比例的划分到栅格中。所以为了方便调整我先把整体划分到了三个布局里。可以选中多个组件然后加入布局。
    然后在下面的layoutRow中调整栅格纵向的占比。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200605115220550.png
    然后这俩是调整layout布局内部的间距,嵌入栅格布局之后不可以直接拉动改变大小,但是可以在右侧栏改变。
    在这里插入图片描述
    在这里插入图片描述
    接下来出的问题是:内容全部集中在左上角
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章