我正在尝试动态创建一个单选按钮列表,代表我计算机上打开的COM端口。第一次创建和显示列表很容易,因为我可以按照数字顺序对端口进行排序,然后将相应的单选按钮添加到我的垂直布局中。
但是,如果用户插入一个创建新COM端口的新设备,我必须找到一些方法将新按钮添加到正确的位置,因为它可能不是正确的数字顺序。到目前为止,我能够做到这一点的唯一方法就是摆脱所有按钮,然后在排序列表后重新添加它们,因为addWidget不允许我指定添加小部件的位置。这种方法似乎效率很低,我假设有一种更简单的方法,但我还没有找到它。
答案 0 :(得分:3)
不是使用addWidget()
,而是在按钮列表中确定索引以放置新索引,并使用QBoxLayout.insertWidget(index, widget)
将其插入其中:
newButton = QRadioButton(...)
newText = newButton.text()
index = 0
for button in get_buttons():
if button.text() >= newText:
break
index += 1
layout.insertWidget(index, newButton)