我用 QT Designer 设计了我当前的 GUI。底层代码创建并启动多个线程。对于每个线程,我设置了几个 QPushButton:开始、停止、暂停、恢复和状态。我想对它们进行分组,但它们不是排他性的,所以我需要为每个相关按钮从信号槽设置启用属性,具体取决于单击了哪个按钮。我尝试为每组按钮创建一个 QButtonGroup。我可以获得 sender(),但看不到如何访问属于该组的其他按钮。尝试了几件事,但没有运气。
问问题
346 次
1 回答
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
也许不是最有效的,但它让我到达那里......
于 2013-02-28T21:53:59.883 回答