软硬件环境
- Windows 10 64bit
- Anaconda3 with python 3.8
- PyQt5 5.15
简介
QComboBox 是下拉列表控件,提供多个选项,让用户选择,在实际应用中很常见。
QCombobox 常用的方法如下
| 方法 | 功能 |
|---|---|
| addItem() | 增加一个下拉选项 |
| addItems() | 增加多个下拉选项,参数使用列表 |
| clear() | 删除所有下拉选项 |
| count() | 返回下拉选项数目 |
| currentText() | 返回选中选项的文本 |
| itemText(i) | 返回索引值为i的选项的文本 |
| currentIndex() | 返回选中选项的索引值 |
| itemText(i) | 返回索引值为i的选项的文本 |
| setItemText(index,text) | 修改索引值为index的文本 |
QComboBox 的常用信号
| 信号 | 功能 |
|---|---|
| Activated | 选中一个下拉选项时发射该信号 |
| currentIndexChanged | 当下拉选项的索引发生改变时发射该信号 |
| highlighted | 选中下拉选项时,发射该信号 |
实操
界面设计,我们还是利用 designer 来做,拖动一个 label 和 combo box 控件到主窗口,调整下位置、大小、字体大小等
下面是核心代码,也都比较好理解,参考代码间的注释
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from ui import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
# 增加单个选项
self.comboBox.addItem("Python")
self.comboBox.addItem("Java")
# 增加多个选项
self.comboBox.addItems(["C", "C++", "Javascript"])
# 绑定信号和槽
# 当下拉选项的index发生变化,才发射这个信号,比如连续选中同一个选项,这个信号就不会发射
self.comboBox.currentIndexChanged.connect(self.on_item_selected)
# 和currentIndexChanged不同的是,即使前后选择的是同一个选项,信号也会被发射
self.comboBox.activated.connect(self.on_activated)
# 当焦点在下拉选项上时,信号被发射
self.comboBox.highlighted.connect(self.on_highlighted)
def on_item_selected(self):
print("{}: {}, index={}, total count={}".format(self.label.text(), self.comboBox.currentText(), self.comboBox.currentIndex(), self.comboBox.count()))
def on_activated(self):
print('on_activated.')
def on_highlighted(self):
print('on_highlighted.')
if __name__ == '__main__':
app = QApplication(sys.argv)
windows = MainWindow()
windows.show()
sys.exit(app.exec_())
最后的执行效果如下

源码下载
https://github.com/xugaoxiang/learningPyQt5
PyQt5系列教程
更多 PyQt5 教程,请移步