Как вносить данные ячейку QTableWidget из QLable?

maroonlok

Новичок
Пользователь
Фев 6, 2023
9
0
1
Всем привет. Имеется программа для нахождения пикселя при нажатии на картинку загруженную в PixMap (QGraphicsView) и вывода его значения в QLable. Но никак не выходит реализовать ввод этих же данных в ячейку таблицы. Прошу совета по данному вопросу.

Таюлица:
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}')
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
лучше бы минимально рабочий пример, демонстрирующий вашу проблему...
я не увидел где вы вставляете в таблицу именно данные из считывания
может документация поможет? - https://doc.qt.io/qt-6/qtablewidget.html
 

maroonlok

Новичок
Пользователь
Фев 6, 2023
9
0
1
лучше бы минимально рабочий пример, демонстрирующий вашу проблему...
я не увидел где вы вставляете в таблицу именно данные из считывания
может документация поможет? - https://doc.qt.io/qt-6/qtablewidget.html
В том и проблема, что не смог найти даже информацию как это можно сделать. в QTable создал setItem(), а вот как выводить информацию из lable в этот Item так и не могу понять.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
ну вот пример
Python:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QLabel, QPushButton


def func():
    s = label.text()
    tableItem = QTableWidgetItem(s)
    table.setItem(0, 0, tableItem)


app = QApplication(sys.argv)

w = QWidget()
label = QLabel(w)
label.setText("LABEL")

button =QPushButton("КНОПКА", w)
button.clicked.connect(func)

table = QTableWidget(w)
table.setRowCount(5)
table.setColumnCount(3)

table.resize(300, 300)
w.resize(500, 500)
label.move(5, 310)
button.move(5, 330)
w.move(300, 300)
w.show()

sys.exit(app.exec_())
 
  • Мне нравится
Реакции: maroonlok

maroonlok

Новичок
Пользователь
Фев 6, 2023
9
0
1
ну вот пример
Python:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QLabel, QPushButton


def func():
    s = label.text()
    tableItem = QTableWidgetItem(s)
    table.setItem(0, 0, tableItem)


app = QApplication(sys.argv)

w = QWidget()
label = QLabel(w)
label.setText("LABEL")

button =QPushButton("КНОПКА", w)
button.clicked.connect(func)

table = QTableWidget(w)
table.setRowCount(5)
table.setColumnCount(3)

table.resize(300, 300)
w.resize(500, 500)
label.move(5, 310)
button.move(5, 330)
w.move(300, 300)
w.show()

sys.exit(app.exec_())
спасибо
 

Форум IT Специалистов