PYQT5主窗体调用子窗体的方法

主界面调用子窗体在delphi、c#等语言的窗体调用很简单,只需在主窗体中引用子窗体的名称就可以把子窗体show出来,开发起来很方面,但是在pyqt5中子窗体的调用就显得相对复杂,而且网上的方法各不相同使人眼花缭乱,大部分的都没有参考性,近期本人在开发小工具的过程中走了一些弯路,因此把自己调用的方法写出来给大家分享。

首先,本人的框架是逻辑和界面分离的,主体代码如下:

运行代码:

Run.py

import sys
from PyQt5.QtWidgets import QApplication
from logic_code import  MainWindow


if __name__=='__main__':
    app=QApplication(sys.argv)
    MainWindow=MainWindow()
    MainWindow.show()

    sys.exit(app.exec_())

逻辑代码:

逻辑代码:

Logic.py

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from Ui_mianfrom import Ui_MainWindow
from Ui_childform import Ui_set_form


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): #主窗体在逻辑文件中的类的代码
      def __init__(self, parent=None):
         
super().__init__(parent)
         
self.setupUi(self)

          self.set_btn.clicked.connect(self.opensetWindow)#按钮双击的槽函数
self.set_window = SetWindow()  #调用新窗体时需要在调用的窗体下先给被调用的窗体实例化,否则,在函数中实例化会导致被调用的窗体没有窗体头部!!!

      def opensetWindow(self):  #调用设置窗体

         self.set_window.setGeometry(100,100,1000,600)
        
self.set_window.show()

class SetWindow(QtWidgets.QWidget,Ui_set_form): #子窗体在逻辑文件中的类的代码
    def __init__(self, parent=None):
       
super().__init__(parent)
       
self.setupUi(self)

以上就是逻辑窗体中调用新窗体的方法,要注意的是class SetWindow(QtWidgets.QWidget,Ui_set_form)中的Ui_set_form是子窗体中的class Ui_set_form(object):,也就是子窗体中的类名,在逻辑窗体中我们可以定义一个新类SetWindow让这个新类继承QtWidgets.QWidget并通过setupUi方法按照Ui_set_form来设置窗口的布局和子部件来布局,并通过setupUi方法来实现。主窗体在调用子窗体的时候,要在调用方法之外对子窗体进行实例化self.set_window = SetWindow(),否则会导致打开的子窗体失去窗体头部,与主窗体融在一起无法拖动。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值