如何使用pyqt5将qtableview索引从一个窗口发送到另一个窗口

时间:2019-12-28 20:08:45

标签: python window pyqt5 qtableview qtablewidget

我有2个窗口,第一个包含要更新的qtablewidget。因此,当我双击一个单元格时,我打开了第二个窗口,以便从qtableview中选择特定的索引。 我成功双击打开了第二个窗口,并获得了所选行的索引。 但是,当我将其发送到第一个窗口时,我不确定是否以正确的方式进行了操作,并且无法在qtablewidget中找到如何使用获取值来更新相关单元格。

class Ui_Form(object):
def setupUi(self, Form):

    self.ID = Inds()
    self.ID.got_ID.connect(self.show_it)

    Form.setObjectName("Form")
    Form.resize(761, 563)
    icon = QtGui.QIcon()
    icon.addPixmap(QtGui.QPixmap("def.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
    Form.setWindowIcon(icon)

    self.tableDF = QtWidgets.QTableWidget(Form)
    self.tableDF.setGeometry(QtCore.QRect(20, 40, 301, 511))
    font = QtGui.QFont()
    font.setFamily("Arial")
    font.setPointSize(10)
    self.tableDF.setFont(font)
    self.tableDF.setAutoFillBackground(False)
    self.tableDF.setAlternatingRowColors(True)
    self.tableDF.setObjectName("tableDF")
    self.tableDF.setColumnCount(0)
    self.tableDF.setRowCount(0)
    self.tableDF.horizontalHeader().setVisible(True)
    self.tableDF.verticalHeader().setVisible(True)

    self.tableDF.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked)
    self.tableDF.doubleClicked.connect(self.listindividuals)
    self.tableDF.setTabKeyNavigation(False)
    self.tableDF.setDragDropOverwriteMode(False)

def listindividuals(self):
    self.window = QtWidgets.QMainWindow()
    self.ui = Inds()
    self.ui.setupUi(self.window)
    self.window.show()

def show_it(self, valeur):
    self.vv=valeur
    print(valeur)


class Inds(QtWidgets.QWidget):
    got_ID = QtCore.pyqtSignal(str)

def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(757, 582)
    icon = QtGui.QIcon()
    icon.addPixmap(QtGui.QPixmap("def.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
    MainWindow.setWindowIcon(icon)

    dfx = pd.read_csv("monfichier.csv", delimiter=';')
    model = PandasModel(dfx)

    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.tableView = QtWidgets.QTableView(self.centralwidget)
    self.tableView.setGeometry(QtCore.QRect(10, 40, 721, 471))
    self.tableView.setAutoFillBackground(False)
    self.tableView.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
    self.tableView.setDragDropOverwriteMode(False)
    self.tableView.setAlternatingRowColors(True)
    self.tableView.setObjectName("tableView")
    self.tableView.setModel(model)
    self.tableView.doubleClicked.connect(self.sendID)

    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 757, 21))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "Liste des individus"))

def sendID(self):
    #self.message = "Salut !!!"
    index=self.tableView.selectionModel().currentIndex()

    value = index.siblingAtColumn(0).data()  
    #print("index : " + str(value))
    self.got_ID.emit(value)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    uix = Ui_Form()
    uix.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

有人可以帮我吗?

0 个答案:

没有答案
相关问题