pyqt5、designer图形界面设计

配置pycharm的external tools,打开designer

左边的组件栏可以直接拖动放到右边,注意如果想拖动的是layout,还需要再把组件拖入layout中。布局中选中的组件,可以在右边查看属性。但是注意这里下面修改的属性,会影响同一类的全部组件,不要轻易在这里修改。

如果想要修改当前组件的样式,应该右键该组件,改变样式表,然后通过css来改变这个组件的样式。

完成之后另存为ui文件到当前项目的文件夹内,然后转换成py文件:pyuic5 -o designer.py designer.ui,当前目录下就会出现designer.py文件。可以配置pyuic后用扩展工具

designer下点击边框的属性——objecName 就是转换成py文件之后的类名。

但是这个文件不能单独使用,需要在main.py里面引入。这一步引入出错花了我很多时间!

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中调整栅格纵向的占比。

然后这俩是调整layout布局内部的间距,嵌入栅格布局之后不可以直接拉动改变大小,但是可以在右侧栏改变。

接下来出的问题是:内容全部集中在左上角

解决办法:

把现有的内容全部复制到mainwindow中去,因为刚刚的代码继承的是mainwindow。

然后是多个UI界面的跳转。

首先把UI文件都生成对应的PY文件。

其次因为默认的类都是mainwindow,但是此时有多个页面如果是同一个class会混乱,所以改一下py文件的类名。

接下来main.py如下,主要的逻辑是先载入主界面,然后给主界面的按钮装上点击信号,一旦发生了点击事件触发某个函数,而这个函数里面则会初始化其他页面的类,从而实现点击切换页面。

import sys

from PyQt5.QtWidgets import QMainWindow, QApplication

# from Ui_MainWindow import *

from HomePages.Ui_Main import Ui_MainWindow

from HomePages.Ui_caculate import Ui_caculate

from HomePages.Ui_defect1 import Ui_defect1

from HomePages.Ui_now import Ui_now

class ManageUI(QMainWindow, Ui_MainWindow):

def __init__(self):

super(ManageUI, self).__init__()

# 将UI界面布局到ManageUI上;

self.setupUi(self)

self.caculate_btn.clicked.connect(self.caculate)

self.defect_btn.clicked.connect(self.defect1)

self.now_btn.clicked.connect(self.now)

# 预测

def caculate(self):

self.main = caculatePage()

self.main.show()

# self.close()

# 故障1

def defect1(self):

self.main = defect1Page()

self.main.show()

# self.close()

# 实时

def now(self):

self.main = nowPage()

self.main.show()

# self.close()

class caculatePage(QMainWindow, Ui_caculate):

def __init__(self):

super(caculatePage, self).__init__()

self.setupUi(self)

class defect1Page(QMainWindow, Ui_defect1):

def __init__(self):

super(defect1Page, self).__init__()

self.setupUi(self)

class nowPage(QMainWindow, Ui_now):

def __init__(self):

super(nowPage, self).__init__()

self.setupUi(self)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = ManageUI()

demo.show()

sys.exit(app.exec_())

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5界面设计可以使用PyQt5的标准工具Designer来实现。Designer是一款可视化界面设计工具,可以帮助我们轻松创建界面元素。要安装和使用Designer,你可以在网上搜索相关的教程(视频)来进行参考,特别是在CSDN上有很多相关的教程和参考内容。如果你懂英语,还可以找到更多的参考资源。想了解界面设计元素的分类,你可以参考一下相关的文档和教程。至于具体的使用方法,你可以按照下面的步骤来进行操作: 1. 首先,你需要导入PyQt5的模块和QtWidgets模块。 2. 创建一个QApplication实例。 3. 创建一个QWidget实例,作为主窗口。 4. 创建一个Ui_Form实例,并调用它的setupUi()方法,将QWidget作为参数传入。这样就可以将设计好的界面元素加载到主窗口中。 5. 调用QWidget的show()方法,显示主窗口。 6. 最后,调用QApplication的exec_()方法,启动事件循环,使程序保持运行状态。 以上就是使用Designer进行PyQt5界面设计的基本步骤,你可以根据具体的需求进行进一步的开发和定制化控件。如果你想了解更多关于PyQt5界面设计的内容,可以参考引用中提供的系列教程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [PyQt5桌面应用开发(4):界面设计](https://blog.csdn.net/withstand/article/details/129736172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值