PyQT5控件:下拉列表框(QComboBox)
QComboBox
下拉列表框
QComboBox
以占用最少屏幕空间的方式向用户显示选项列表。它是一个选择控件,显示当前项目,并可以弹出可选项目列表。组合框可以是可编辑的,允许用户修改列表中的每个项目。
QComboBox
类属性
editable
设置是否可编辑currentText
设置当前列表框显示内容(前提是先在列表框添加内容)currentIndex
设置当前列表框显示内容的索引(前提是先在列表框添加内容)maxVisibleitems
当下拉列表弹出时,允许显示的最大子项目maxCount
设置下拉选项集合中的数目insertPolicy
设置用户在可编辑的组合框中输入一个新的字符串时插入的策略
NoInsert
不插入InsertAtTop
在顶部插入InsertAtCurrent
在当前插入InsertAtBottom
在底部插入InsertAfterCurrent
在当前的后面插入InsertBeforeCurrent
在当前的前面插入InsertAlphabetically
按字母顺序插入
sizeAdjustPolicy
大小调节策略
AdjustToContents
根据所有内容的长度AdjustToContentsOnFirstShow
根据第一次显示的内容长度AdjustToMinimumContentsLength
适应最小内容长度AdjustToMinimumContentsLengthWithIcon
适应最小内容长度与图标
minimumContentsLength
最小的内容长度iconSize
图标大小duplicatesEnabled
设置用户在可编辑的组合框中重复添加frame
边框modelColumn
设置显示的模型列
QComboBox
信号
信号触发条件:
activated(QString)
与用户交互时,某个条目被选中发出信号,并传递条目的值activated(int)
与用户交互时,某个条目被选中发出信号,并传递条目的索引currentIndexChanged(QString)
当前索引发生改变时发出信号,并传递改变之后的值(用户交互,代码控制)currentIndexChanged(int)
当前索引发生改变时发出信号,并传递改变之后的索引(用户交互,代码控制)currentTextChanged(QString)
当前文本内容发生改变时,并传递文本内容editTextChanged(QString)
编辑的文本发生改变时发出信号,并传递文本内容highlighted(QString)
在下拉列表中,鼠标移动到某个条目时发出信号,并传递条目的值highighted(int)
在下拉列表中,鼠标移动到某个条目时发出信号,并传递条目的索引
在Qt设计师中,直接双击可添加下拉框条目
QComboBox
下拉框实例
import sys
from PyQt5.QtWidgets import QWidget, QComboBox, QApplication
class ComboxDemo(QWidget):
def __init__(self):
super().__init__()
# 设置标题
self.setWindowTitle('ComBox例子')
# 设置初始界面大小
self.resize(300, 200)
# 实例化QComBox对象
self.cb = QComboBox(self)
self.cb.move(100, 20)
# 单个添加条目
self.cb.addItem('C')
self.cb.addItem('C++')
self.cb.addItem('Python')
# 多个添加条目
self.cb.addItems(['Java', 'C#', 'PHP'])
# 信号
self.cb.currentIndexChanged[str].connect(self.print_value) # 条目发生改变,发射信号,传递条目内容
self.cb.currentIndexChanged[int].connect(self.print_value) # 条目发生改变,发射信号,传递条目索引
self.cb.highlighted[str].connect(self.print_value) # 在下拉列表中,鼠标移动到某个条目时发出信号,传递条目内容
self.cb.highlighted[int].connect(self.print_value) # 在下拉列表中,鼠标移动到某个条目时发出信号,传递条目索引
def print_value(self, i):
print(i)
if __name__ == '__main__':
app = QApplication(sys.argv)
comboxDemo = ComboxDemo()
comboxDemo.show()
sys.exit(app.exec_())