Advertisement
Guest User

Untitled

a guest
Dec 27th, 2020
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.23 KB | None | 0 0
  1. # Trying to implement a chunk of code form
  2. # https://doc.qt.io/qtforpython-5.12/PySide2/QtWidgets/QAbstractItemDelegate.html#PySide2.QtWidgets.QAbstractItemDelegate
  3.  
  4. import sys
  5. import os
  6.  
  7. from PySide2.QtWidgets import (
  8.     QApplication,
  9.     QMainWindow,
  10.     QTableView,
  11.     QVBoxLayout,
  12.     QWidget,
  13.     QStyleOptionProgressBar,
  14.     QStyledItemDelegate,
  15.     QStyle
  16. )
  17.  
  18. from PySide2.QtCore import QAbstractTableModel, QModelIndex, QSortFilterProxyModel
  19. from PySide2.QtGui import Qt
  20.  
  21. data = [
  22.     ['123', '456', '789'],
  23.     ['456', '123', '789'],
  24.     ['789', '789', '123'],
  25. ]
  26.  
  27. class WidgetDelegate(QStyledItemDelegate):
  28.     def __init__(self):
  29.         super(WidgetDelegate, self).__init__()
  30.  
  31.     def paint(self, painter, option, index):
  32.         if index.column() == 2:
  33.             progress = 50
  34.             self.progressBarOption = QStyleOptionProgressBar()
  35.             self.progressBarOption.rect = option.rect
  36.             self.progressBarOption.minimum = 0
  37.             self.progressBarOption.minimum = 100
  38.             QApplication.style().drawControl(QStyle.CE_ProgressBar, self.progressBarOption, painter)
  39.        
  40.         else:
  41.             QStyledItemDelegate.paint(self, painter, option, index)
  42.  
  43.  
  44. class TableModel(QAbstractTableModel):
  45.     headerLabels = ['Header1', 'Header2', 'Header3']
  46.     def __init__(self, input_data = None):
  47.         super(TableModel, self).__init__()
  48.         self.tableData = input_data
  49.         if self.tableData is None:
  50.             self.tableData = list()
  51.  
  52.     def rowCount(self, parent = QModelIndex):
  53.         try:
  54.             row_count = len(self.tableData)
  55.             return row_count
  56.         except:
  57.             return 0
  58.  
  59.     def columnCount(self, parent = QModelIndex):
  60.         try:
  61.             column_count = len(self.tableData[0])
  62.             return column_count
  63.         except:
  64.             return 0
  65.  
  66.     def headerData(self, section, orientation, role=Qt.DisplayRole):
  67.         if role == Qt.DisplayRole and orientation == Qt.Horizontal:
  68.             return self.headerLabels[section]
  69.  
  70.         return QAbstractTableModel.headerData(self, section, orientation, role)
  71.  
  72.     def data(self, index, role = Qt.DisplayRole):
  73.         if role == Qt.DisplayRole or role == Qt.EditRole:
  74.             return self.tableData[index.row()][index.column()]
  75.        
  76.  
  77. class TableView(QTableView):
  78.     def __init__(self):
  79.         super(TableView, self).__init__()
  80.         self.setSelectionBehavior(self.SelectRows)
  81.  
  82.  
  83. class MainWindow(QMainWindow):
  84.    
  85.     def __init__(self):
  86.         super(MainWindow, self).__init__()
  87.         self.tableView = TableView()
  88.         self.delegate = WidgetDelegate()
  89.         self.tableView.setItemDelegate(self.delegate)
  90.         self.initUi()
  91.         self.tableModel = TableModel(data)
  92.         self.tableView.setModel(self.tableModel)
  93.  
  94.        
  95.     def initUi(self):
  96.         #----- Init UI -----
  97.         mainLayout = QVBoxLayout()
  98.         mainLayout.addWidget(self.tableView)
  99.         mainWidget = QWidget()
  100.         mainWidget.setLayout(mainLayout)
  101.         self.setCentralWidget(mainWidget)
  102.         self.resize(650, 350)
  103.  
  104. if __name__ == "__main__":
  105.     app = QApplication(sys.argv)
  106.     window = MainWindow()
  107.     window.show()
  108.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement