Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.73 KB | None | 0 0
  1. import sys
  2.  
  3. from PyQt5.QtGui import *
  4. from PyQt5.QtCore import *
  5. from PyQt5.QtGui import *
  6. from PyQt5.QtWidgets import *
  7. import pandas as pd
  8.  
  9.  
  10. class App(QWidget):
  11.    
  12.     CATEGORY, ID, DESCRIPTION = range(3)
  13.    
  14.     def __init__(self):
  15.         super().__init__()
  16.  
  17.         self.initUI()
  18.  
  19.     def initUI(self):
  20.         self.setWindowTitle("Insumos.CSV - Find")
  21.        
  22.         self.dataView = QTreeView()
  23.         self.dataView.setEditTriggers(QAbstractItemView.NoEditTriggers)
  24.         self.dataView.doubleClicked.connect(self.copySelected)
  25.  
  26.         self.searchText = QLineEdit()
  27.         self.searchButton = QPushButton("Find")
  28.         self.searchButton.clicked.connect(self.findString)
  29.         self.searchText.returnPressed.connect(self.searchButton.click)
  30.        
  31.         self.searchBox = QHBoxLayout()
  32.         self.searchBox.addWidget(self.searchText)
  33.         self.searchBox.addWidget(self.searchButton)
  34.  
  35.         self.mainBox = QVBoxLayout()
  36.         self.mainBox.addLayout(self.searchBox)
  37.         self.mainBox.addWidget(self.dataView)
  38.  
  39.         self.readData()
  40.        
  41.         self.resize(500, 200)
  42.         self.setLayout(self.mainBox)
  43.        
  44.         self.show()
  45.  
  46.     def createTreeModel(self, parent):
  47.         model = QStandardItemModel(0, 3, parent)
  48.         model.setHeaderData(self.CATEGORY, Qt.Horizontal, "Category")
  49.         model.setHeaderData(self.ID, Qt.Horizontal, "ID")
  50.         model.setHeaderData(self.DESCRIPTION, Qt.Horizontal, "Description")
  51.         return model
  52.    
  53.     def addRow(self, model, category, id_, description):
  54.         self.treeModel.insertRow(0)
  55.         self.treeModel.setData(self.treeModel.index(0, self.CATEGORY), category)
  56.         self.treeModel.setData(self.treeModel.index(0, self.ID), id_)
  57.         self.treeModel.setData(self.treeModel.index(0, self.DESCRIPTION), description)
  58.  
  59.     def updateTreeModel(self):
  60.         self.treeModel = self.createTreeModel(self)
  61.         self.dataView.setModel(self.treeModel)
  62.    
  63.     def readData(self):
  64.         self.updateTreeModel()
  65.         self.data_frame = pd.read_excel("test2.xlsx")
  66.         for row in self.data_frame.values:
  67.             self.addRow(self.treeModel, *row)
  68.  
  69.     def findString(self):
  70.         self.updateTreeModel()
  71.         for row in self.data_frame[self.data_frame["DESCRIPTION"].str.find(self.searchText.text()) != -1].values:
  72.             self.addRow(self.treeModel, *row)
  73.  
  74.     def copySelected(self):
  75.         index = self.dataView.currentIndex()
  76.         text = " ".join([str(self.treeModel.data(index.sibling(index.row(), col))) for col in range(3)])
  77.         QApplication.clipboard().setText(text)
  78.  
  79.        
  80. if __name__ == '__main__':
  81.     app = QApplication(sys.argv)
  82.     ex = App()
  83.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement