如何访问插槽中的按钮组成员?

时间:2013-02-28 02:17:03

标签: pyqt members

我使用QT Designer设计了当前的GUI。底层代码创建并启动多个线程。对于每个线程,我设置了几个QPushButtons:Start,Stop,Pause,Resume和Status。我想对它们进行分组,但它们不是独占的,所以我需要为每个相关按钮设置信号槽中的enabled属性,具体取决于单击的按钮。我已经尝试为每组按钮创建一个QButtonGroup。我可以获取sender(),但是看不到如何访问属于该组的其他按钮。尝试了几件事,但没有运气。

1 个答案:

答案 0 :(得分:0)

好的,我想我有我需要的东西。问题是如何根据发件人的身份设置组中按钮的启用状态?

我有一些可以控制的x个线程。每个QButtonGroup中按钮的objectNames如下:

pushButton_start_x
pushButton_stop_x
pushButton_status_x
pushButton_pause_x
pushButton_resume_x

在我的Python代码中,我有以下字典:

# Each key represents a button type that requires setting the group's
# buttons enabled state

# Each key's values map to these buttons: [start,stop,status,pause,resume]

testManagerButtonEnableStates = {}
testManagerButtonEnableStates["start"] = [False,True,True,True,False]
testManagerButtonEnableStates["stop"] = [True,False,True,False,False]
testManagerButtonEnableStates["pause"] = [False,False,True,False,True]
testManagerButtonEnableStates["resume"] = [False,True,True,True,False]

此例程根据发件人的objectName设置状态:

# Note that the status button does not require any action here

def setButtonGroupEnabledStates(self):
    buttonType = str(self.sender().objectName().toAscii()).split('_')[1]
    if buttonType == "status":
        return
    i = 0
    for button in self.sender().group().buttons():
        button.setEnabled(self.testManagerButtonEnableStates[buttonType][i])
        i+=1

也许不是最有效的,但它让我在那里......

相关问题