Я делаю приложение с PyQt5 и сталкиваюсь с некоторыми проблемами. Я хочу выбрать данные из QTableView, нажав клавишу Enter, и отобразить их в QLineEdit. Я сделал это с сигналами doubleClicked, но я все еще хочу отобразить данные в QLineEdit двумя способами, а затем закрыть диалоговое окно QTableView сразу после нажатия клавиши Enter или двойного щелчка. Вот мой код:
import sys
import os
from PyQt5 import QtCore, QtGui, QtWidgets, uic
class Application(QtWidgets.QMainWindow):
def __init__(self):
super(Application, self).__init__()
self.mainwindow = uic.loadUi('test.ui', self)
self.mainwindow.pushButton.clicked.connect(self.table)
def table(self):
self.table = QtWidgets.QTableView()
data = [
[2, 3, 5],
[23, 4, 5],
[2, 6, 7],
[0, 3, 5]
]
self.model = TableModel(data)
self.table.setModel(self.model)
self.table.doubleClicked.connect(self.on_click)
self.table.show()
def on_click(self, signal):
row = signal.row() # RETRIEVES ROW OF CELL THAT WAS DOUBLE CLICKED
column = signal.column() # RETRIEVES COLUMN OF CELL THAT WAS DOUBLE CLICKED
cell_dict = self.model.itemData(signal) # RETURNS DICT VALUE OF SIGNAL
cell_value = cell_dict.get(0) # RETRIEVE VALUE FROM DICT
index = signal.sibling(row, 0)
index_dict = self.model.itemData(index)
index_value = index_dict.get(0)
print(
'Row {}, Column {} clicked - value: {}\n'.format(row, column, cell_value))
self.mainwindow.lineEdit.setText('%s' %cell_value)
class TableModel(QtCore.QAbstractTableModel):
def __init__(self, data):
super(TableModel, self).__init__()
self._data = data
def data(self, index, role):
if role == QtCore.Qt.DisplayRole:
return self._data[index.row()][index.column()]
def rowCount(self, index):
return len(self._data)
def columnCount(self, index):
return len(self._data[0])
if __name__ == '__main__':
application = QtWidgets.QApplication(sys.argv)
window = Application()
window.show()
application.exec_()
И мой Gui:
Позвольте мне объяснить немного: при нажатии при нажатии кнопки отображается таблица данных, а затем я хочу выбрать данные в таблице, нажав клавишу ввода, после чего отобразит данные в QlineEdit и закроет таблицу