В Qt дизайнер, у меня есть пользовательский GraphicsView виджет, который я продвигаю в пользовательский класс под названием Вид:Дизайнер, созданный дизайнером PyQt, ссылается на объект верхнего уровня?
Обратите внимание, что его родитель HorizontalLayout. Соответствующий код из pyuic выглядит следующим образом:
class Ui_panelFill(object):
def setupUi(self, panelFill):
panelFill.setObjectName("panelFill")
panelFill.resize(1031, 702)
self.centralwidget = QtWidgets.QWidget(panelFill)
self.centralwidget.setObjectName("centralwidget")
self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 20, 1001, 631))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.graphicsView = View(self.horizontalLayoutWidget)
self.graphicsView.setObjectName("graphicsView")
...
Внутренность программы, такие, как все важные переменные и методы, в классе верхнего уровня называется panelFill.
class panelFill(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
uic.loadUi("panelFill.ui",self)
self.vertices=[[0,0],[0,120],[240,120],[240,0]]
...
Как я могу ссылаться на переменную вершин из метода класса View? Я надеялся на что-то вроде self.parent.vertices, но, увы, родитель не объект panelFill, это horizontalLayout. Есть ли что-то вроде self.superduper(). Vertices для получения атрибутов родительского объекта верхнего уровня вместо исходного родительского объекта?
Спасибо, я просто нашел это в другом подобном вопросе. Поэтому в представлении __init__ я делаю self.top = self.window(), затем делаю ссылки типа self.top.vertices –