ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-09-02 18:32:57  阅读:188  来源: 互联网

标签:__ 文件 窗口 对话框 self PyQt5 dialog 按钮


首先在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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有