下拉列表框属于QcomboBox类,是一个集按钮和下拉选项于一体的控件,也被称为下拉列表框。它的常用方法如下:
addItem():添加一个下拉选项
addItems():从列表中添加下拉选项。一次可添加或者多项
Clear():删除下拉选项集合中的所有选项
count():返回下拉选项集合中的数目
curTentText():返回选中选项的文本
itemText(i):获取索引为i的item的选项文本
currentIndex():返回选中项的索引
setItemText(int index, text):改变序号为index项的文本
QComboBox类中的常用信号如下:
import sys # 导入sys模块,用于获取或操作Python解释器的相关变量和函数。
from PyQt6.QtWidgets import * # 从PyQt6的QtWidgets模块中导入所有类和函数,用于创建图形用户界面。
class MyWidget(QWidget): # 定义一个名为MyWidget的新类,它继承自QWidget。
def __init__(self, parent=None): # 定义类的初始化方法,parent参数用于指定父窗口,默认为None。
super(MyWidget, self).__init__(parent) # 调用父类QWidget的初始化方法。
self.setWindowTitle("ComBox测试") # 设置窗口的标题为“ComBox测试”。
self.resize(300, 100) # 设置窗口的大小为300x100像素。
self.lb1 = QLabel("选择课程:") # 创建一个QLabel对象,用于显示文本“选择课程:”。
self.lb2 = QLabel(" ") # 创建一个QLabel对象,初始时显示一个空格,后续用于显示选中的课程。
self.cb = QComboBox() # 创建一个QComboBox对象,用于显示一个下拉列表框。
self.cb.addItem("计算机") # 向下拉列表框中添加一个名为“计算机”的选项。
self.cb.addItems(["软件工程", "通信工程", "人工智能"]) # 向下拉列表框中添加多个选项:软件工程、通信工程、人工智能。
self.cb.currentIndexChanged.connect(self.selectFunc) # 当下拉列表框中的当前选项改变时,调用selectFunc方法。
vlayout = QVBoxLayout() # 创建一个垂直布局对象。
vlayout.addWidget(self.lb1) # 将self.lb1(显示“选择课程:”的QLabel)添加到垂直布局中。
vlayout.addWidget(self.cb) # 将下拉列表框添加到垂直布局中。
vlayout.addWidget(self.lb2) # 将self.lb2(用于显示选中课程的QLabel)添加到垂直布局中。
self.setLayout(vlayout) # 将MyWidget的布局设置为之前创建的垂直布局。
def selectFunc(self, i): # 定义一个方法,用于处理下拉列表框的选项改变事件。i是当前选项的索引。
selectItem = self.cb.currentText() # 获取当前选中的选项的文本。
for count in range(self.cb.count()): # 遍历下拉列表框中的所有选项。
if self.cb.itemText(count) == selectItem: # 如果当前选项的文本与遍历到的选项文本相同。
self.lb2.setText("选择" + str(count) + "项: " + selectItem) # 设置self.lb2的文本为“选择x项: 文本”,其中x是选项的索引。
if __name__ == '__main__': # 检查当前脚本是否是作为主程序运行。
app = QApplication(sys.argv) # 创建一个QApplication对象,这是PyQt6应用程序的入口点。
w = MyWidget() # 创建一个MyWidget对象。
w.show() # 显示MyWidget窗口。
sys.exit(app.exec()) # 进入Qt应用程序的主循环,等待用户交互。当应用程序结束时,通过sys.exit退出Python解释器。
这段代码主要实现了一个基于PyQt6的图形用户界面(GUI)应用程序,该应用程序包含一个下拉列表(QComboBox
)和两个标签(QLabel
)。下拉列表用于展示几个课程选项,用户可以从中选择一个。当用户选择某个课程时,第二个标签会更新以显示用户的选择。
使用的布局和控件:
-
布局:
QVBoxLayout
,这是一个垂直布局,它将控件垂直排列。 -
控件:
QWidget
:基础窗口部件。QLabel
:用于显示文本标签的控件。这里使用了两个标签,一个用于显示提示信息“选择课程:”,另一个用于显示用户的选择。QComboBox
:下拉列表控件,用于展示多个选项,用户可以从中选择一个。
说明:
1.下拉列表框中有四个选项,可以使用QComboBox的addItem方法添加。当下拉列表框中的选项发生改变时将发送currentIndexChanged信号,关联槽函数selectionChange。
2.先获得当前选择的列表项:
selectItem=self.cb.currentText()
然后用for循环按序遍历下拉列表框中的选项,将每一项与当前选择项比较:
if self.cb.itemText(count)==selectItem:
获得当前选择项在列表中的序号。
关键语句:
-
self.setWindowTitle("ComBox测试")
:设置窗口的标题为“ComBox测试”。 -
self.resize(300, 100)
:设置窗口的大小为300x100像素。 -
self.cb = QComboBox()
:创建一个下拉列表控件。 -
self.cb.addItem("计算机")
和self.cb.addItems(["软件工程","通信工程","人工智能"])
:向下拉列表中添加课程选项。 -
self.cb.currentIndexChanged.connect(self.selectFunc)
:连接下拉列表的currentIndexChanged
信号到selectFunc
槽函数。当用户在下拉列表中更改选项时,selectFunc
函数会被调用。 -
vlayout = QVBoxLayout()
:创建一个垂直布局对象。 -
vlayout.addWidget(self.lb1)
,vlayout.addWidget(self.cb)
,vlayout.addWidget(self.lb2)
:将标签和下拉列表控件添加到垂直布局中。 -
self.setLayout(vlayout)
:将垂直布局设置为窗口的布局。 -
def selectFunc(self, i)
:定义一个槽函数,该函数在用户更改下拉列表中的选项时被调用。 -
selectItem = self.cb.currentText()
:获取下拉列表中当前选中的文本。 -
循环部分:通过循环遍历下拉列表中的所有项目,找到与选中项匹配的文本,并更新第二个标签的文本,显示用户的选择。
总的来说,这段代码创建了一个简单的窗口,窗口中包含一个提示标签、一个下拉列表控件和一个用于显示用户选择的标签。当用户在下拉列表中选择一个课程时,第二个标签会更新以显示用户的选择。