我对编程很新,所以请耐心等待我。我正在尝试在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)
我的问题是,当我尝试将信号连接到它时,它将无法工作。到目前为止,我所看过的所有教程都只通过调用另一个方法中的方法来创建Widget并未创建的小部件的信号(我意识到这可能不是正确的术语,但就像我说的,我是新来的:( )我将发布我编写的代码以尝试连接下面的信号。我的猜测是我必须指定创建复选框的方法,但我也无法使用它。所以怎么做我得到这个信号连接?也随意纠正我的术语:)感谢任何可以提供帮助的人:)
def createConnections(self):
self.selection_CB.toggled.connect(self.checkboxLine1_ChangeState)
答案 0 :(得分:0)
您在何处以及如何设置变量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)