PyQt 排序单选按钮列表
我正在尝试动态创建一个单选按钮的列表,这些按钮代表我电脑上打开的COM端口。第一次创建和显示这个列表其实很简单,因为我可以把端口按数字顺序排列,然后把对应的单选按钮添加到我的垂直布局中。
不过,如果用户插入了一个新设备,导致出现了新的COM端口,我就得想办法把新按钮放在正确的位置,因为它可能不在正确的数字顺序里。到目前为止,我唯一能做到的就是先把所有按钮都删掉,然后在排序后重新添加它们,因为addWidget这个方法不让我指定添加的位置。这样做感觉效率很低,我觉得应该有更简单的方法,但我还没找到。
1 个回答
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)