PySide-다른 메서드 내에서 호출되는 메서드를 통해 생성 된 위젯에 신호를 연결하는 방법

user5550365

저는 프로그래밍에 익숙하지 않으니 기다려주십시오. Autodesk Maya에서 간단한 스크립트를 만들려고합니다. 두 개의 확인란을 나란히 설정하는 방법을 만들었습니다 (아래 참조).

    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)
그린 셀

변수를 어디에 어떻게 설정하고 self.selection_CB있습니까?

당신의에서 checkboxLayout기능 당신은을 포함 할 수 return있도록처럼 확인란 :

`return [name1, name2]`

그런 다음 함수를 호출 할 때 할당하고 거기에서 이벤트를 연결합니다.

self.check1, self.check2 = self.checkboxLayout("selection_CB", "Selection", "name_CB", "Name", mainLayout, True)

또는 그들이 항상 동일한 기능에 연결되어 있다면 왜 연결을 바로하지 checkboxLayout않습니까?

name1.stateChanged.connect(self.checkboxLine1_ChangeState)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관