实现方式非常简单与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
软件全部功能还未完成,慢慢更新中。
仓库链接