其他分享
首页 > 其他分享> > PyQt5主窗口点击按钮弹出子窗口对话框

PyQt5主窗口点击按钮弹出子窗口对话框

作者:互联网

首先在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,按钮
来源: https://www.cnblogs.com/muxiaomu/p/16650900.html