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

问题描述 投票:0回答:1

我有以下代码

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_())

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

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

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

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

python pyqt qt-designer
1个回答
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)

然后使用 self.parent

© www.soinside.com 2019 - 2024. All rights reserved.