当前位置:首页>python>15.业余快速入门Python__实战:下拉列表数据联动

15.业余快速入门Python__实战:下拉列表数据联动

  • 2026-09-02 19:00:30
15.业余快速入门Python__实战:下拉列表数据联动
     上节使用for循环 做了一个案例,输出九九乘法口诀表,其中使用了多行文本输入框控件QTextEdit(),通过案例可以使业余人士快速理解for循环的用法,也真实的感受一下用PySide6(PyQT) 如何实现一个软件界面;代码加上运行效果展示,也能更直观的看到多行文本输入框怎么用。
     本节再介绍一个控件,下拉列表控件QComboBox(),就是让用户通过下拉列表来选择提前预制好的数据,效果如下:
一、本节用到Python中的基础知识字典
    字典是放在大括号内的以键值对形式储存的一种数据结构,像上面的省和省会对应关系就可以用键值对形式来储存,如:
data = {"河南":“郑州”, "河北":“石家庄”, "湖南":“长沙”,......}
其中冒号前面的叫键 key,字典中 键 必须是唯一的,不可重复;后面的叫值 value,值可以有重复;
二、如何拿到字典中所有的键
使用data.keys() 就拿到一个字典中所有的键数据,但是我一般会把拿到的数据强制转换成列表list;字典默认data.keys()类型是dict_keys类型,不是列表,需要使用 list 强制转换;
list(data.keys()) =["河南", "河北", "湖南"]
三、如何拿到字典中所有的值
使用data.values(),同样需要转换成列表
list(data.values()) =["郑州", "石家庄", "长沙"]
原代码如下:
from PySide6.QtCore import Qtfrom PySide6.QtWidgets import QApplication, QWidget, QComboBox, QGridLayoutclass Win(QWidget):      def __init__(self):            super().__init__()            self.setWindowTitle("下拉列表")            self.resize(350, 200)            # 创建网格布局            self.main_layout = QGridLayout()            # 设置网格布局给主窗口            self.setLayout(self.main_layout)            self.main_layout.setHorizontalSpacing(20)            # 设置网格各列宽度比例            self.main_layout.setColumnStretch(0, 2)            self.main_layout.setColumnStretch(1, 1)            self.main_layout.setColumnStretch(2, 2)            self.ui_01()      def ui_01(self):            # 创建下拉列表数据列表            self.data = {"河南": "郑州", "河北": "石家庄", "湖南": "长沙", "湖北": "武汉", "广西": "南宁", "广东": "广州"}            # 创建一个提示标签和输入框            self.label_1 = QLabel("省 会", self)            self.label_1.setAlignment(Qt.AlignmentFlag.AlignCenter)            self.line = QLineEdit()            self.line.setAlignment(Qt.AlignCenter)            # 创建一个下拉列表框            self.combo = QComboBox()            # 下拉列表连接信号(当前文本改变信号)            self.combo.currentIndexChanged.connect(self.change)            # 向下拉列表中添加数据            self.combo.addItems(self.data.keys())            # 把上面三个控件添加到主网格布局            self.main_layout.addWidget(self.combo, 0, 0)            self.main_layout.addWidget(self.label_1, 0, 1)            self.main_layout.addWidget(self.line, 0, 2)              # 创建槽函数change  def change(self, index):            print(index)            sheng_hui = list(self.data.values())            self.line.setText(sheng_hui[index])if __name__ == "__main__":      import sys      app = QApplication(sys.argv)      win = Win()      win.show()      sys.exit(app.exec())
四、列表的位置索引值
sheng = ["河南", "河北",  "湖南"]
首先列表中的元素是按顺序排列的,列表中每个元素所在的位置,就是他的索引值,索引从0开始; 
河南对应的索引值就是0;
河北对应的索引值就是1;
湖南对应的索引值就是2;
五、通过索引值拿到元素
sheng = ["河南", "河北",  "湖南"]
sheng[0] = "河南"
sheng[1] = "河北"
sheng[2] = "湖南"
     今天就先到这里吧,下节聊聊 下拉列表 QComboBOX  的信号及信号的返回值。

最新文章

随机文章