软硬件环境
- 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
教程,请移步