使用PYQT5怎么实现一个界面嵌套功能

  介绍

这篇文章给大家介绍使用PYQT5怎么实现一个界面嵌套功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

简单演示下:

首先主界面界面:

使用PYQT5怎么实现一个界面嵌套功能

在表单处设置下水平布的局,就如下图:

使用PYQT5怎么实现一个界面嵌套功能

左右两侧分别是一个帧控件,左侧框架里含有两个按钮,右侧其实我只是用来占位的,后面解释。选中两个框,点击布置水平分流,将它设置为普利特布局,为了能让要切换的界面在右侧的帧显示出来。

接下来是界面1:

使用PYQT5怎么实现一个界面嵌套功能

界面2:

使用PYQT5怎么实现一个界面嵌套功能

将三个。ui文件转为. py文件,然后在代码中调整。

第一步:

在索引。py文件下导入第一和第二

得到first  import  Ui_First   得到second  import  Ui_Second

第二步:

在索引。py文件下生成第一和第二两个子类:

class 第一(QWidget, Ui_First):   def 才能__init__(自我):   ,,,超级(首先,自我). __init__ ()   ,,,#,子窗口初始化时实现子窗口布的局   ,,,self.setupUi(自我)   ,,,#,设置子窗体最小尺寸   ,,,self.setMinimumWidth (30)   ,,,self.setMinimumHeight (30)   ,   class 其次(QWidget, Ui_Second):   def 才能__init__(自我):   ,,,超级(第二,自我). __init__ ()   ,,,self.setupUi(自我)   ,,,self.setMinimumWidth (30)   ,,,self.setMinimumHeight (30)

第三步:

在索引。py的初始化里面生成两个界面的对象

#,初始化两个对象,并把,首先对象,加入到,splitter 中   时间=self.first 第()   时间=self.second 第二()   self.splitter.addWidget (self.first)

这个时候运行可能会报错:

回溯(最近的电话最后):
  文件“D:/python/workpace/普通/cad/index.py",第93行,& lt; module>
  ,ui.setupUi(主窗口)
  文件“D:/python/workpace/普通/cad/index.py", 60岁,在setupUi
  ,self.splitter.addWidget (self.first)
TypeError: addWidget(自我,QWidget):参数1意想不到的类型& # 39;Ui_First& # 39;

原因是在第一位的。py这个子界面中,是没有菜单栏等这些主界面才有的界面,因为直接用qt生成的ui文件转化的,所以代码还是带有菜单栏这些的,我们只要注释掉,并且把自我。centralwidget换成对象名即可。(同样。py也要)

最后只要绑定按钮事件

self.pushButton.clicked.connect (lambda : self.change (self.pushButton.objectName ()))   self.pushButton_2.clicked.connect (lambda : self.change (self.pushButton_2.objectName ()))   def 才能改变(自我,名称):   ,,,if  name ==,“pushButton":   ,,,,,#,这句的意思是把现在,splitter 的界面设置为无,也就是去掉   ,,,,,self.splitter.widget (1) .setParent(没有)   ,,,,,#,把另一个self.first这个界面插入上一句去掉的那个界面的位置   ,,,,,self.splitter.insertWidget (1, self.first)   ,   ,,,if  name ==,“pushButton_2":   ,,,,,self.splitter.widget (1) .setParent(没有)   ,,,,,self.splitter.insertWidget (1, self.second)

这样运行,就大功告成啦

使用PYQT5怎么实现一个界面嵌套功能

索引。py

#, - *安康;编码:,utf-8  - *安康;   #,Form  implementation  generated 得到reading  ui  file  & # 39; index.ui& # 39;   #   :#,Created  PyQt5  UI  code  generator  5.11.3   #   #,警告!,All  changes  made 却;能够拷贝file  will  be 输了!   ,   得到PyQt5  import  QtCore, QtGui, QtWidgets   得到PyQt5.QtWidgets  import  QWidget   得到first  import  Ui_First   得到second  import  Ui_Second   ,   class  Ui_MainWindow(对象):   def 才能setupUi(自我,,主窗口):   ,,,MainWindow.setObjectName (“MainWindow")   ,,,MainWindow.resize (800,, 600)   ,,,self.centralwidget =, QtWidgets.QWidget(主窗口)   ,,,self.centralwidget.setObjectName (“centralwidget")   ,,,self.horizontalLayout =, QtWidgets.QHBoxLayout (self.centralwidget)   ,,,self.horizontalLayout.setObjectName (“horizontalLayout")   ,,,self.splitter =, QtWidgets.QSplitter (self.centralwidget)   ,,,self.splitter.setOrientation (QtCore.Qt.Horizontal)   ,,,self.splitter.setObjectName (“splitter")   ,,,self.frame =, QtWidgets.QFrame (self.splitter)   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用PYQT5怎么实现一个界面嵌套功能