python+pyqt实现:将数据从excel表中导出到qt的下拉列表框(QComboBox)中

  1. 最近在完善之前做的一个基于人脸识别的打卡签到系统,在添加人脸信息时,手动输入学生信息太慢了,因此改进,增加一个新的功能:手动点击“导入数据”即将excel表中的数据加载到qt的下拉列表中
  2. 操作演示如下:

在这里插入图片描述

  1. 设计思路
    3.1 首先设置界面(包括导入按钮,下拉列表)
    3.2 其次实现导入数据的功能
    3.3 然后实现下拉列表功能
    3.4 最后导入数据和下来列表的结合
  2. 代码

import sys
import pandas as pd
from PyQt5.QtWidgets import *

class ImportData(QWidget):
    def __init__(self,parent=None):
        super(ImportData, self).__init__(parent)
        #设置标题
        self.setWindowTitle('导入数据到下拉列表的例子')
        #设置初始界面大小
        # 设置窗口的长宽
        self.resize(300,200)
        #增加一个'导入数据'的按钮
        self.button = QPushButton('导入数据')
        #布局
        layout=QVBoxLayout()
        #创建显示的内容,默认空白
        self.btn1=QLabel('')

        #实例化QComBox对象
        self.cb=QComboBox()
        #当下拉索引发生改变时发射信号触发绑定的事件
        self.cb.currentIndexChanged.connect(self.selchange)
        #控件添加到布局中,设置布局
        layout.addWidget(self.button)#将按钮导入布局
        layout.addWidget(self.cb)
        layout.addWidget(self.btn1)
        self.setLayout(layout)
        # 导入数据按钮,链接导入函数
        self.button.clicked.connect(self.import_data)

    def import_data(self):
        # 打开对话框,获取要导出的数据的文件名
        # 获取excel表中的数据
        # "./test.xls"也行
        filename, rel = QFileDialog.getOpenFileName(self, "导入数据", ".", "EXCEL(*.xlsx)")
        print(filename)
        path = filename
        data = pd.read_excel(path, None)
        print("ok")
        print(data.keys())
        for sh_name in data.keys():
            print('sheet_name的名字是:', sh_name)
            sh_data = pd.DataFrame(pd.read_excel(path, sh_name))
            # 再写一个for循环用于显示excel表中的信息
            for l in sh_data['姓名']:
                self.cb.addItem(l)
                print(sh_data['姓名'])
        self.cb.currentIndexChanged.connect(self.selchange)

    #用于显示鼠标点击的内容
    def selchange(self,i):
        #标签用来显示选中的文本
        #currentText():返回选中选项的文本
        self.btn1.setText(self.cb.currentText())
        #输出选项集合中每个选项的索引与对应的内容
        #count():返回选项集合中的数目
        for count in range(self.cb.count()):
            print('Item'+str(count)+'='+self.cb.itemText(count))
            print('current index',i,'selection changed',self.cb.currentText())

if __name__ == '__main__':
    app=QApplication(sys.argv)
    importdata = ImportData()
    importdata.show()
    sys.exit(app.exec_())
  1. 可以直接将代码拷贝到新建的py文件中运行。另外excel表中的第一列是姓名,可以在代码中做修改。

在这里插入图片描述

  1. 是在另外一个博主的基础上做的。见链接:PyQt5基本控件详解之QComboBox(九)
  2. 关于下拉列表框的详细讲解见链接:PyQT5控件:下拉列表框(QComboBox)
  3. 关于pyqt5操作手册键连接:PyQt5-Chinese-tutorial
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值