pyqt5 在QComboBox()中创建每个单独的button按钮
时间: 2024-03-04 14:48:43 浏览: 135
PyQt5重写QComboBox的鼠标点击事件方法
在 PyQt5 中,可以使用 QComboBox 的 setItemDelegate() 方法来自定义每个下拉列表项的外观和交互行为。可以创建一个自定义的委托类,继承自 QStyledItemDelegate,并在其 createEditor() 方法中创建一个 QPushButton 作为下拉列表项的编辑器。下面是一个简单的示例:
``` python
from PyQt5.QtWidgets import QComboBox, QStyledItemDelegate, QPushButton, QApplication
from PyQt5.QtGui import QStandardItemModel, QStandardItem
import sys
class ButtonDelegate(QStyledItemDelegate):
def createEditor(self, parent, option, index):
button = QPushButton(parent)
button.setText(index.data())
return button
if __name__ == '__main__':
app = QApplication(sys.argv)
combo_box = QComboBox()
model = QStandardItemModel()
for i in range(5):
item = QStandardItem(f"Button {i+1}")
model.appendRow(item)
combo_box.setModel(model)
delegate = ButtonDelegate()
combo_box.setItemDelegate(delegate)
combo_box.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个 ButtonDelegate 类作为 QComboBox 的委托,并在其 createEditor() 方法中创建了一个 QPushButton 作为下拉列表项的编辑器。然后,我们创建了一个 QStandardItemModel 并将其附加到 QComboBox 上,最后将委托设置为 QComboBox 的委托。运行代码,会看到每个下拉列表项都被替换成了一个带有按钮标签的 QPushButton。
阅读全文