73 lines
2.9 KiB
Python
73 lines
2.9 KiB
Python
|
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
from PyQt5.QtCore import Qt,QModelIndex, pyqtSignal
|
|
from PyQt5.QtGui import QStandardItemModel, QStandardItem
|
|
from PyQt5.QtWidgets import (QTableWidgetItem, QTableWidget, QAbstractItemView, QHeaderView, QStyleFactory)
|
|
|
|
from rscder.utils.project import PairLayer, ResultLayer
|
|
|
|
class ResultTable(QtWidgets.QWidget):
|
|
|
|
on_item_click = pyqtSignal(dict)
|
|
on_item_changed = pyqtSignal(dict)
|
|
|
|
def __init__(self, parent=None):
|
|
super(ResultTable, self).__init__(parent)
|
|
# self.tableview = QTableView(self)
|
|
self.tablewidget = QTableWidget(self)
|
|
self.tablewidget.setColumnCount(5)
|
|
self.tablewidget.setRowCount(0)
|
|
self.tablewidget.setHorizontalHeaderLabels(['序号', 'X', 'Y', '概率', '变化'])
|
|
self.tablewidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
|
|
|
|
self.tablewidget.cellDoubleClicked.connect(self.onDoubleClicked)
|
|
self.tablewidget.cellClicked.connect(self.onClicked)
|
|
self.tablewidget.cellChanged.connect(self.onChanged)
|
|
|
|
# self.tablewidget.setModel(self.tableview)
|
|
# self.tableview
|
|
layout = QtWidgets.QVBoxLayout(self)
|
|
layout.addWidget(self.tablewidget)
|
|
self.setLayout(layout)
|
|
|
|
def clear(self):
|
|
pass
|
|
|
|
def onChanged(self, row, col):
|
|
if col == 4:
|
|
item_idx = row
|
|
item_status = self.tablewidget.item(row, col).checkState() == Qt.Checked
|
|
self.on_item_changed.emit({'idx':item_idx, 'status':item_status})
|
|
|
|
def onClicked(self, row, col):
|
|
if col == 4:
|
|
self.tablewidget.item(row, col).setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
|
|
|
|
def onDoubleClicked(self, row, col):
|
|
x = self.tablewidget.item(row, 1).text()
|
|
y = self.tablewidget.item(row, 2).text()
|
|
self.on_item_click.emit({'x':x, 'y':y})
|
|
|
|
def set_data(self, data:ResultLayer):
|
|
self.tablewidget.setRowCount(len(data.data))
|
|
for i, d in enumerate(data.data):
|
|
self.tablewidget.setItem(i, 0, QTableWidgetItem(str(i+1)))
|
|
self.tablewidget.setItem(i, 1, QTableWidgetItem(str(d[0]))) # X
|
|
self.tablewidget.setItem(i, 2, QTableWidgetItem(str(d[1]))) # Y
|
|
self.tablewidget.setItem(i, 3, QTableWidgetItem(str(d[2]))) # 概率
|
|
status_item = QTableWidgetItem('变化')
|
|
if d[3] == 0:
|
|
status_item.setBackground(Qt.green)
|
|
status_item.setCheckState(Qt.Unchecked)
|
|
elif d[3] == 1:
|
|
status_item.setBackground(Qt.yellow)
|
|
status_item.setCheckState(Qt.Checked)
|
|
self.tablewidget.setItem(i, 4, status_item) # 变化
|
|
self.tablewidget.resizeColumnsToContents()
|
|
self.tablewidget.resizeRowsToContents()
|
|
self.tablewidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
|
self.tablewidget.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
|
|
|
|
|
|
|