首先在Qt Designer中创建一个主窗口和一个对话框子窗口,如下图所示:
设计完成后,转换成两个py文件,对于两个分开的文件实现子窗口的调用,我看了一些资料,基本都是新建一个文件然后实现显示主窗口以及调用子窗口,不是我想要的,所以在下面给出我的实现方法,就在主窗口一个文件中实现。
首先在主窗口文件中导入子窗口的文件,以及创建一个子窗口类初始化窗口,代码如下:
from ChildWindowTest import * class ChildWin(QtWidgets.QDialog, Ui_Dialog): def __init__(self): super(ChildWin, self).__init__() self.setupUi(self)
构造函数super()是必须的,否则就只能调用子窗口的显示,不能调用子窗口中的按钮等控件。
然后实现弹出子窗口功能,以及实现子窗口中的【确定】按钮功能,点击后关闭子窗口并在主窗口的文本框中显示消息。实现代码如下,在主窗口类中定义实现功能函数:
# 弹出子窗口与实现【确定】按钮功能 def showDialog(self): # 创建子窗口实例 dialog = ChildWin() # 显示子窗口 dialog.show() # 实现子窗口中的【确定】按钮功能 def pB_OK(): self.textEdit.setPlainText("子窗口弹出成功!") dialog.close() # 关联【确定】按钮 dialog.pushButton.clicked.connect(pB_OK) dialog.exec_()
其中【确定】按钮的函数我是直接在该里面定义的,亲测有效厚,而且个人觉得比重新再单独定义要方便惹!其中最后一行代码dialog.exec_()必不可少,不少子窗口只会弹出一下就自动关闭了!
最后于【打开子窗口】按钮进行关联,再在最后写个显示主窗口的代码就可以运行了,如下所示:
# 设置【打开子窗口】按钮 self.pushButton.clicked.connect(self.showDialog) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
这个显示代码适合直接在ui转换成的py文件中使用,不需要在另外创建一个文件以及类了!运行后效果如下:
版权声明:本文为CSDN博主「lee_swift13」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43350361/article/details/104842332
标签:__,文件,窗口,对话框,self,PyQt5,dialog,按钮 From: https://www.cnblogs.com/muxiaomu/p/16650900.html