子窗口返回的MainWindow中的值

0 投票
1 回答
1269 浏览
提问于 2025-04-17 21:04

我怎么才能在关闭子窗口时,把一个值从子窗口发送到主窗口呢?

当我在子窗口里按下“关闭按钮”时,子窗口会把计算出来的值发送给主窗口。

我做了一个这样的测试:

def closeEvent(self, evnt):
        value = 34
        return value

但是没有成功,我得到了这个结果:

TypeError: invalid result type from ChildWindow.closeEvent()

1 个回答

1

这里有一个简单的例子,教你怎么做到这一点:

import sys
from PyQt4 import QtGui


class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)

        self.button = QtGui.QPushButton("Make child")
        self.button.clicked.connect(self.openChildWindow)

        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.button)

    def openChildWindow(self):
        self.childWindow = ChildWindow(self)
        self.childWindow.setGeometry(650, 350, 200, 300)
        self.childWindow.show()

    def printResult(self, value):  
        print value

class ChildWindow(Window):
    def __init__(self, parentWindow):
        super(ChildWindow, self).__init__()
        self.parentWindow = parentWindow
        self.parentWindow.printResult("I'm in child init")
        self.button.setDisabled(1)

    def closeEvent(self, event):
        self.parentWindow.printResult("Closing child, this text is returned to parent")

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(600, 300, 200, 300)
    window.show()
    sys.exit(app.exec_())

撰写回答