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

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

时间:2022-09-02 18:35:38浏览次数:87  
标签:__ 文件 窗口 对话框 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,按钮
From: https://www.cnblogs.com/muxiaomu/p/16650900.html

相关文章

  • pyqt5控件使用方法
    一)消息框(QMessageBox)一、提供的类型QMessageBox.information信息框QMessageBox.question问答框QMessageBox.warning警告QMessageBox.ctitical危险......
  • sparkstreaming转换算子--窗口函数
    window画图理解说明countByWindow对每个滑动窗口的数据执行count操作reduceByWindow对每个滑动窗口的数据执行reduce操作reduceByKeyAndWindow对每个滑动窗口的......
  • FairyGUI窗口拖动,关闭,加载图片
    1.在FairyGUI软件里面制作好窗口window的格式,按照官网上的来关闭按钮:closeButton、拖动范围:dragArea、步骤:1.新建一个空组件2.再建一个空组件命名为:frame3.frame组件......
  • Vue -- 监听隐藏显示窗口后重新请求数据
    为什么会用到监听隐藏显示窗口的事件呢?主要是因为页面中有计时器,窗口隐藏页面隐藏后,计时器暂停,这里使用了重新获取数据,重新启动倒计时的功能解决,所以需要监听事件。metho......
  • 打开对话框选择多个文件进行汇总
    1、打开对话框选择文件,可以多选2、将选中的文件进行循环,逐一打开将其中的数据汇总到总表里,然后关闭这个文件3.将copy来的数据在总表里向下增加 Sub导入多工作簿()Di......
  • modbus_rtu协议读取监测软件-大气废弃数据实时监控软件pyqt5
      串口发送数据:01030000001845c0串口接收数据:0103304242825d4223f4074113097740f7e08541569aa140f0654240ccedaf4283f0a442......
  • 【笔记】Oracle 窗口函数
    Oracle窗口函数简单来说,窗口函数是分析函数的一种,通常可以理解成over()函数构成:函数名①()over(partitionby分组的列名orderby排序的列名XXX)XXX是指特殊使用的......
  • 修改window.open打开窗口的标题,不是名称
    在网上找了很久都不行,终于自己试了一下成功了,原理是延迟varwin=window.open(url,"","width="+winSizeWidth+",height="+winSizeheight+",left="+left+"......
  • js - 修改弹出窗口的标题
    js-修改弹出窗口的标题_xsscacy的博客-CSDN博客 https://blog.csdn.net/shen813/article/details/9087029先利用window.open(url)打开一个窗口,然后在利用设置document.t......
  • FLTK基础 - 创建第一个窗口
    //Fl.H是必须包含的头文件#include<FL/Fl.H>#include<FL/Fl_Window.H>#include<FL/Fl_Box.H>intmain(intargc,char**argv){//创建一个窗口,接下来创建......