pyqt5 я хочу знать, как выбрать значение строки в qtableview - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть две таблицы.Я хочу получить выбранное значение в table1 и поместить его в table2.

Например, если вы выберете 1, table2, я хочу, чтобы все значение строки 1 было введено, а следующеестрока 5 будет добавлена ​​в строку 5. В заключение я бы хотел, чтобы table1 показывал выбранное значение строки в table2.

. Я не знаю точно, как загрузить выбранное значение table1,но я думаю, что было бы лучше добавить одно значение к QStandardItemModel в def table1_DoubleClicked (self):, используя self.serch.table.setModel в table2.Как я могу это сделать?

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(500, 500)
        self.Table1()
        self.Table2()
        self.Layout()

    def Table1(self):
        self.select_guorpbox = QGroupBox()
        self.select_guorpbox.setTitle("Article 1")
        self.columncount = 10
        self.rowcount = 10

        self.select_table_model = QStandardItemModel(self.rowcount,self.columncount)

        for i in range(self.rowcount):
            for j in range(self.columncount):
                table = QStandardItem('test [{},{}]'.format(i,j))
                self.select_table_model.setItem(i,j,table)
                table.setTextAlignment(Qt.AlignCenter)

        self.TextFilter = QSortFilterProxyModel()
        self.TextFilter.setSourceModel(self.select_table_model)
        self.TextFilter.setFilterKeyColumn(2)

        self.SerchLineEdit = QLineEdit()
        self.SerchLineEdit.textChanged.connect(self.TextFilter.setFilterRegExp)

        self.select_table = QTableView()
        self.select_table.setModel(self.TextFilter)
        self.select_table.setColumnWidth(1, 150)
        self.select_table.setColumnWidth(2, 300)
        self.select_table.setEditTriggers(QTableView.NoEditTriggers)
        self.select_table.setSelectionBehavior(QTableView.SelectRows)
        self.select_table.setContextMenuPolicy(Qt.CustomContextMenu)
        self.select_table.doubleClicked.connect(self.table1_DoubleClicked)
        self.select_table.customContextMenuRequested.connect(self.table1_CustomContextMenu)

        # column auto sort
        # self.select_table.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)
        # self.select_table.resizeColumnsToContents()

        v = QVBoxLayout()
        v.addWidget(self.select_table)
        self.select_guorpbox.setLayout(v)

    def Table2(self):
        self.serch_groupbox = QGroupBox()
        self.serch_groupbox.setTitle("Article 2")
        lable = QLabel("~")
        lable.setFixedWidth(10)
        lable.setAlignment(Qt.AlignCenter)
        insertbutton = QPushButton("insert")
        self.startdate = QDateEdit()
        self.startdate.setDate(QDate.currentDate())
        self.startdate.setFixedWidth(150)
        self.startdate.setCalendarPopup(True)
        self.enddate = QDateEdit()
        self.enddate.setDate(QDate.currentDate())
        self.enddate.setFixedWidth(150)
        self.enddate.setCalendarPopup(True)
        self.article_serch_button = QPushButton("ARTICL SERTCH")
        self.article_serch_button.setFixedWidth(250)

        self.serch_table = QTableView()

        h1 = QHBoxLayout()
        h1.addWidget(insertbutton)
        h1.addWidget(self.startdate)
        h1.addWidget(lable)
        h1.addWidget(self.enddate)
        h1.addWidget(self.article_serch_button)
        h2 = QHBoxLayout()
        h2.addWidget(self.serch_table)

        v = QVBoxLayout()
        v.addLayout(h1)
        v.addLayout(h2)

        self.serch_groupbox.setLayout(v)

    def table1_DoubleClicked(self):
        self.k =QItemSelectionModel().Select

    def table1_CustomContextMenu(self, position):
        menu = QMenu()
        menu.addAction("Add")
        menu.exec_(self.select_table.mapToGlobal(position))
        print("?")

    def Layout(self):
        self.vbox = QVBoxLayout()
        self.vbox.addWidget(self.SerchLineEdit)
        self.vbox.addWidget(self.select_guorpbox)
        self.vbox.addWidget(self.serch_groupbox)
        self.setLayout(self.vbox)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    fream = MainWindow()
    fream.show()
    app.exec_()

1 Ответ

0 голосов
/ 27 февраля 2019

Можно попробовать следующее: он копирует выбранную строку из одной таблицы в другую:

def table1_DoubleClicked(self, index):
    rows = []
    row = []

    for column_index in range(self.columncount):
        cell_idx = self.select_table.model().index(index.row(), column_index)
        row.append(self.select_table.model().data(cell_idx))

    rows.append(row)

    search_table_model = QStandardItemModel(len(rows), self.columncount)

    for i in range(len(rows)):
        for j in range(self.columncount):
            search_table_model.setItem(i, j, QStandardItem(rows[i][j]))

    self.serch_table.setModel(search_table_model)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...