zoukankan      html  css  js  c++  java
  • pyqt5--TableWidGet

     使用pyqt5展示excel的数据到桌面,并获取选中的数据内容

    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtGui import QIcon
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    import pandas as pd
    import numpy as np
    
    
    class Ui_MainWindow(QMainWindow):
    
        def __init__(self):
            super(QtWidgets.QMainWindow, self).__init__()
            self.setupUi(self)
            self.retranslateUi(self)
    
    
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(666, 488)
            self.centralWidget = QtWidgets.QWidget(MainWindow)
            self.centralWidget.setObjectName("centralWidget")
            self.retranslateUi(MainWindow)
    
            self.tableWidget = QtWidgets.QTableWidget(self.centralWidget)
            self.tableWidget.setGeometry(QtCore.QRect(0, 60, 813, 371))
            self.tableWidget.setObjectName("tableWidget")
            self.tableWidget.setColumnCount(0)
            self.tableWidget.setRowCount(0)
            self.tableWidget.setStyleSheet("selection-background-color:pink")
            self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
            self.tableWidget.setSelectionBehavior(QTableWidget.SelectRows)
    
            self.tableWidget.raise_()
    
            # 设置图标
    
    
            self.pushButton = QtWidgets.QPushButton(self.centralWidget)
            self.pushButton.setGeometry(QtCore.QRect(90, 20, 75, 23))
            self.pushButton.setObjectName("pushButton")
            self.pushButton.setText("打开")
            MainWindow.setCentralWidget(self.centralWidget)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
            self.pushButton.clicked.connect(self.openfile)
            self.pushButton.clicked.connect(self.creat_table_show)
    
            # 确定
            self.okButton = QtWidgets.QPushButton(self.centralWidget)
            self.okButton.setGeometry(QtCore.QRect(180, 20, 75, 23))
            self.okButton.setObjectName("okButton")
            self.okButton.setText("确定")
            MainWindow.setCentralWidget(self.centralWidget)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
            self.okButton.clicked.connect(self.get_select)
    
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "测试数据"))
            MainWindow.setWindowIcon(QIcon("./head.jpg"))
            # MainWindow.show()
    
    
        def get_select(self):
            # print(self.tableWidget.columnCount()) # 返回列数
            # print(self.tableWidget.rowCount())  # 返回行数
    
            colomn = self.tableWidget.columnCount()
            row_list = set()
            for i in self.tableWidget.selectionModel().selection().indexes():
                row_list.add(i.row())
            # print(row_list)
            select_data = []
            for row in row_list:
                row_data = [self.tableWidget.item(row, p).text() for p in range(colomn)]
                select_data.append(row_data)
            print(select_data)
    
    
        def openfile(self):
    
            # 获取路径
            openfile_name = QFileDialog.getOpenFileName(self, '选择文件', '', 'Excel files(*.xlsx , *.xls)')
    
            #print(openfile_name)
            global path_openfile_name
            path_openfile_name = openfile_name[0]
    
    
        def creat_table_show(self):
            # 读取表格,转换表格
            if len(path_openfile_name) > 0:
                input_table = pd.read_excel(path_openfile_name)
                # print(1,input_table)
                input_table_rows = input_table.shape[0]
                input_table_colunms = input_table.shape[1]
                # print(2,input_table_rows)
                # print(3,input_table_colunms)
                input_table_header = input_table.columns.values.tolist()
                #print(input_table_header)
    
                #读取表格,转换表格,给tablewidget设置行列表头
    
                self.tableWidget.setColumnCount(input_table_colunms)
                self.tableWidget.setRowCount(input_table_rows)
                self.tableWidget.setHorizontalHeaderLabels(input_table_header)
    
                #给tablewidget设置行列表头
    
                #遍历表格每个元素,同时添加到tablewidget中
                for i in range(input_table_rows):
                    input_table_rows_values = input_table.iloc[[i]]
                    #print(input_table_rows_values)
                    input_table_rows_values_array = np.array(input_table_rows_values)
                    input_table_rows_values_list = input_table_rows_values_array.tolist()[0]
                     #print(input_table_rows_values_list)
                    for j in range(input_table_colunms):
                        input_table_items_list = input_table_rows_values_list[j]
                        #print(input_table_items_list)
                        # print(type(input_table_items_list))
    
                        #将遍历的元素添加到tablewidget中并显示
    
                        input_table_items = str(input_table_items_list)
                        newItem = QTableWidgetItem(input_table_items)
                        newItem.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
                        self.tableWidget.setItem(i, j, newItem)
    
            #遍历表格每个元素,同时添加到tablewidget中
            else:
                self.centralWidget.show()
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())
  • 相关阅读:
    WPF技巧:通过代码片段管理器编写自己常用的代码模板提示效率
    C# 8.0和.NET Core 3.0高级编程 分享笔记二:编程基础第二部分
    C# 8.0和.NET Core 3.0高级编程 分享笔记二:编程基础第一部分
    WPF教程十一:简单了解并使用控件模板
    C# 8.0和.NET Core 3.0高级编程 分享笔记一:C#8.0与NET Core 3.0入门
    WPF教程十:如何使用Style和Behavior在WPF中规范视觉样式
    概率论与数理统计图式(第一章 概率论的基本概念)1.2概率
    概率论与数理统计图式(第一章 概率论的基本概念)1.1随机事件与随机变量
    软件工程基础图式(第三章 需求分析)
    软件工程基础图式(第二章)
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/11592622.html
Copyright © 2011-2022 走看看