如何在 Pyqt 中正确设置小部件的父级?

Shi*_*ava 5 python pyqt qt-designer

我有以下代码

from PyQt5 import QtCore, QtGui, QtWidgets
from mw import Ui_MainWindow as mwin
from wd import Ui_Form as wdg

class widget(QtWidgets.QWidget):
    def __init__(self,parent = None):
            super(widget,self).__init__(parent)
            self.ui = wdg()
            self.ui.setupUi(self)
            self.show()

class Main(QtWidgets.QMainWindow):
    def __init__(self,parent = None):
        super(Main,self).__init__(parent)
        self.ui = mwin()
        self.ui.setupUi(self)
        self.show()
        w = widget(self)
import sys
if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        mn = Main()
        sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

Ui由qt设计器生成并从另一个文件导入。

当我运行代码时,主窗口和小部件都会合并在一起,并且当我关闭主窗口时会发生分段错误。

当我将小部件中的父级设置为“无”时,问题出现,但小部件没有父级。

我无法理解出了什么问题以及如何正确地将主窗口设置为小部件的父窗口?

Ujj*_*wal 0

这可能不是正确的方法,但有效。

解决方法:

class widget(QtWidgets.QWidget):
    def __init__(self,parent = None):
        super(widget,self).__init__()
        self.ui = wdg()
        self.ui.setupUi(self)

        self.parent = parent

        self.show()


class Main(QtWidgets.QMainWindow):
    def __init__(self,parent = None):
    super(Main,self).__init__(parent)
    self.ui = mwin()
    self.ui.setupUi(self)
    self.show()
    w = widget(self)
Run Code Online (Sandbox Code Playgroud)

然后使用 self.parent