PyQt5子窗口开启后锁定或隐藏主窗口

PyQt5子窗口开启后锁定或隐藏主窗口

老规矩,先放图

锁定主窗口

隐藏主窗口

PyQt5子窗口开启后锁定或隐藏主窗口_第1张图片

实现

实现方式非常简单与C++方式基本相同
在主界面UI初始化时把按钮信号与拉起窗口的槽函数绑定,这里我的按钮为selectFormat槽函数为buttonMsg

self.selectFormat.clicked.connect(self.buttonMsg)

信号到达槽函数之后进行分支选择(因为几个按钮共用了同一个槽)

    def buttonMsg(self):
        print("收到信号")
        if self.sender() == self.openButton:
            print(self.serialBuf.port)
        elif self.sender() == self.selectFormat:
            print("解析格式选择")
            self.__analysisUi()
        elif self.sender() == self.selectDatabase:
            print("数据库选择")
        elif self.sender() == self.saveExport:
            print("导出数据")

锁定主窗口

实现窗口锁定
通过exec()显示方式进行实现,exec与show的区别可参考官方文档,
exec是显示一个模式对话框并且锁定,直到关闭,
在对话框弹出期间,用户不可以切换同程序下的其它窗口。
show显示的是非模式对话框,所以此处用exec。

    def __analysisUi(self):
        print("解析格式选择窗口开启")
        analysis = AnalysisUi()
        analysis.exec()
        analysis.close()
        self.show()  # 子窗口关闭后重新显示主窗口
        print("解析格式选择窗口关闭")

隐藏窗口

隐藏窗口使用show方法完成
点击按钮后通过hide方法把主界面隐藏,关闭窗口后再通过show把主界面显示
代码如下

    def __analysisUi(self):
        print("解析格式选择窗口开启")
        self.hide()  # 子窗口打开后隐藏主窗口
        analysis = AnalysisUi()
        analysis.show()
        analysis.exec_()
        self.show()  # 子窗口关闭后重新显示主窗口
        print("解析格式选择窗口关闭")

结尾

完整工程放在了Gitee
软件全部功能还未完成,慢慢更新中。
仓库链接

你可能感兴趣的:(PyQt5,qt,python,开发语言,pyqt)