PyQt 排序单选按钮列表

0 投票
1 回答
1012 浏览
提问于 2025-04-16 21:46

我正在尝试动态创建一个单选按钮的列表,这些按钮代表我电脑上打开的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)

撰写回答