Всем привет. Имеется программа для нахождения пикселя при нажатии на картинку загруженную в PixMap (QGraphicsView) и вывода его значения в QLable. Но никак не выходит реализовать ввод этих же данных в ячейку таблицы. Прошу совета по данному вопросу.
Таюлица:
Cчитывание
Вывод:
Таюлица:
Python:
def table(self):
# создание таблицы
self.table = QtWidgets.QTableWidget(self.centralwidget)
self.table.setGeometry(QtCore.QRect(10, 50, 462, 950))
self.table.setStyleSheet("background-color:rgb(209, 209, 209)")
self.headerLabels = list('A')
n = 3000
self.table.setRowCount(n)
self.table.setColumnCount(len(self.headerLabels))
self.table.setHorizontalHeaderLabels(self.headerLabels)
for row in range(n):
for col in range(len(self.headerLabels)):
item = QTableWidgetItem(''.format(self.headerLabels[col], row))
self.table.setItem(row, col, item)
self.table.resizeColumnsToContents()
self.table.resizeRowsToContents()
Cчитывание
Код:
class GraphicsView(QGraphicsView): # +++
clicked = pyqtSignal(str, str)
def mousePressEvent(self, event):
super(GraphicsView, self).mousePressEvent(event)
self.setCursor(Qt.ForbiddenCursor)
# Получить положение мыши на экране
pos = event.globalPos()
image = QApplication.primaryScreen().grabWindow(
int(QApplication.desktop().winId()),
pos.x() - 23, pos.y() - 23, 47, 47).toImage()
color = image.pixelColor(23, 23)
if color.isValid():
self.clicked.emit('View', color.name())
def mouseReleaseEvent(self, event):
super(GraphicsView, self).mouseReleaseEvent(event)
self.setCursor(Qt.ArrowCursor)
class MainssWindow(QMainWindow, Ui_MainsWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.layout = QtWidgets.QHBoxLayout(self.wid)
self.layout.addWidget(self.wid)
self.scene = GraphicsScene()
self.scene.setSceneRect(0, 0, 1400, 900)
width = Settings.NUM_BLOCKS_X * Settings.WIDTH
height = Settings.NUM_BLOCKS_Y * Settings.HEIGHT
self.scene.setSceneRect(0, 0, width, height)
self.scene.setItemIndexMethod(QtWidgets.QGraphicsScene.NoIndex)
self.setMouseTracking(True)
self.graphicsView.setScene(self.scene)
self.scene.clicked.connect(self.point1)
self.graphicsView.clicked.connect(self.point1)
Вывод:
Python:
def point1(self, text, value):
if text == 'Scene':
self.lab.setText(f'x1 = {value.x()}, y1 = {value.y()}. Интенсивность: ')
#if text == 'View':
#self.lab.setText(f'{self.lab.text()} {value}')
if text == 'Int':
self.lab.setText(f' {self.lab.text()} {value}')