Я довольно новичок в программировании, поэтому, пожалуйста, будьте терпеливы со мной. Я пытаюсь создать простой скрипт в Autodesk Maya. Я создал метод, который устанавливает два чек-боксов бок о бок (см ниже) ...PySide - Как подключить сигнал к виджету, который был создан методом, вызываемым внутри другого метода
def checkboxLayout(self, name1, text1, name2, text2, parentLayout, initState):
##create and add horizontal layout
layout = QtGui.QHBoxLayout()
parentLayout.addLayout(layout)
width = 75
name1 = QtGui.QCheckBox(text1)
layout.addWidget(name1)
name1.setMinimumWidth(width)
name1.setMaximumWidth(width)
name1.setChecked(initState)
name2 = QtGui.QCheckBox(text2)
layout.addWidget(name2)
name2.setMinimumWidth(width)
name2.setMaximumWidth(width)
А позже я назвал этот метод дважды, чтобы спасти меня того, чтобы выписать тот же самый большой блок кода дважды ...
def createLayout(self):
##Layout
mainLayout = QtGui.QVBoxLayout()
mainLayout.addWidget(self.title)
mainLayout.addSpacerItem(self.titleSpacer)
mainLayout.addWidget(self.oldLabel)
self.checkboxLayout("selection_CB", "Selection", "name_CB", "Name", mainLayout, True)
mainLayout.addWidget(self.textbox1)
mainLayout.addSpacerItem(self.midSpacer)
mainLayout.addWidget(self.newLabel)
mainLayout.addWidget(self.textbox2)
self.checkboxLayout("delHistory_CB", "Delete\nHistory", "freezeTrans_CB", "Freeze\nTransforms", mainLayout, False)
self.buttonLayout = QtGui.QGridLayout()
mainLayout.addLayout(self.buttonLayout)
self.buttonLayout.addWidget(self.cancelButton, 0, 0)
self.buttonLayout.addWidget(self.okButton, 0, 1)
self.setLayout(mainLayout)
Моя проблема заключается в том, что, когда я пытаюсь подключить сигнал к нему, он не будет работать. Все обучающие материалы, которые я наблюдал до сих пор, имеют только подключенные сигналы к виджетам, которые НЕ созданы, вызывая метод внутри другого метода (я понимаю, что, вероятно, это не правильная терминология, но, как я уже сказал, я новичок в этом :() Я отправлю код, который я написал, чтобы попытаться подключить сигнал ниже. Я предполагал, что мне нужно было указать метод, который создал этот флажок, но я не мог заставить это работать. Я получаю этот сигнал, подключенный? Также вы можете исправить мою терминологию :) Спасибо всем, кто может помочь :)
def createConnections(self):
self.selection_CB.toggled.connect(self.checkboxLine1_ChangeState)
Любой вопрос, который включает в себя варианты «он не работает» без дополнительного объяснения, вряд ли получит одобрение у большинства потенциальных ответчиков. Дикая догадка: вы получаете 'AttributeError', потому что' self' не имеет атрибута 'selection_CB'. – ekhumoro