PyQt5: lambda阻碍子窗口进程?

PyQt5: lambda阻碍子窗口进程?

通常而言,调用QDialog子窗口时,仅使用show()而不配合exec()或添加self.时将导致子窗口“一闪而过”。

但我近期发现,如果子窗口中存在lambda表达式时,则不存在子窗口闪退的现象。

父窗口代码:

class MainWindow(QMainWindow):
    def __init__(self, parent = None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle('父窗口')
		self.button1.clicked.connect(self.action1)
		
    def action1(self):
        self.textline1.setText(str(data1))
        print(data1)
        print('打开子窗口')
        subwindow = subWindow.subDialog(data1)
        subwindow.show()
        # 接受信号
        subwindow.Signal1.connect(self.getConstants1)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    UI = MainWindow()
    UI.resize(600,800)
    UI.show()
    sys.exit(app.exec())

子窗口代码

class subDialog(QDialog):
    Signal1 = pyqtSignal(list)
    Signal2 = pyqtSignal(str)
    def __init__(self, data):
        super(subDialog, self).__init__()
        self.setWindowTitle('子窗口')
        self.button1.clicked.connect(lambda: self.action1(data))
        self.button2.clicked.connect(self.action2)

    def action1(self, data):
    	print(data)
    	return

if __name__ == '__main__':
    data1 = [56,5,6,5,2,5,56]
    data2 = '85646555'
    app = QApplication(sys.argv)
    # UI = subDialog(data1)
    UI = subDialog(data2)
    UI.resize(600,800)
    UI.show()
    sys.exit(app.exec())

暂不清楚原因

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值