Python.pyqt窗口点击按钮触发事件生成子窗口——解决子窗口闪现问题

子窗口闪现:
当对某一窗口的按钮绑定事件后,点击该按钮,我的本意是想要通过点击按钮来创建一个子窗口并将其显示(但是出现了闪现)——我将创建子窗口和子窗口显示都放在一个触发事件当中。(导致闪现问题的代码如下)

错误代码:

# 弹出划分区域窗口(绑定方法)
    def showPic(self):
    	//这是子窗口中用来创建窗口对象的
    	labelWin = MyWindow2()
        labelWin.show()

但是让我疑惑的是,无论怎么点击按钮,虽然会触发绑定事件但是子窗口总是闪现。

解决方法:
最终在父窗口的setUpUi()函数当中,连同按钮等组件的初始化一起,我将子窗口的初始化也放在该方法中。然后在原先定义的触发函数当中只用来显示子窗口,这样闪现问题便解决了。

子窗口创建代码如下:
这里只看最后一行即可,其余行都是窗口组件的初始化

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1150, 890)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")



        self.line_3 = QtWidgets.QFrame(self.centralwidget)
        self.line_3.setGeometry(QtCore.QRect(0, 63, 1140, 40))
        self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_3.setObjectName("line_3")

        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(0, 436, 898, 21))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")

        # 文本显示
        self.textBrowser = QtWidgets.QTextBrowser(MainWindow)
        self.textBrowser.setGeometry(QtCore.QRect(902, 130, 240, 510))
        self.textBrowser.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.textBrowser.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        self.textBrowser.setObjectName("textBrowser")
        # 将创建的文本框对象传递给paintlabel中的对象
        paintLabel.textBrowser = self.textBrowser


        # 区域识别按钮
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(910, 830, 100, 31))
        self.pushButton_3.setObjectName("pushButton_3")

        # 区域显示
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(1040, 90, 100, 31))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItems(['区域1','区域2','区域3','区域4','区域5'])
        paintLabel.comboBox = self.comboBox

        # 标签
        self.option_label = QtWidgets.QLabel(self.centralwidget)
        self.option_label.setGeometry(QtCore.QRect(965, 570, 150, 190))

        # 设定识别区域(调用分割区域界面)
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        # (x,y,width,height)
        self.pushButton_4.setGeometry(QtCore.QRect(100, 820, 200, 50))
        self.pushButton_4.setObjectName("pushButton_4")

        # 识别区域详情
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(600, 820, 200, 50))
        self.pushButton_5.setObjectName("pushButton_5")
        # 在这之前都是创建
        self.labelWin = MyWindow2()

触发事件:

    # 弹出划分区域窗口
    def showPic(self):
        self.labelWin.show()

点击如下按钮:
在这里插入图片描述
弹出对应子窗口:(由于项目原因,只显示窗口上部分截图)
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值