как отключить все столбцы, кроме одного столбца в Qtablewidget PYQT - python - PullRequest
0 голосов
/ 19 марта 2019

Постановка проблемы: Отключить определенные столбцы и включить конкретные строки на основе индекса текущей строки.

Я работаю над Qtablewidget, я попробовал следующий код, который работает нормально для отключения. я хотел включить содержимое строки таблицы виджетов на основе индекса строки. когда я нажал на кнопку, эта строка должна быть включена. Я новичок в стеке потока, пожалуйста, наведите меня. Я пытаюсь включить ячейку tablewidget, кнопку, комбинированный список, который я не получаю, наставь меня, как включить конкретную строку на основе индекса.

Код:

self.tableWidget = QtGui.QTableWidget(self.centralwidget)
self.tableWidget.setColumnCount(4)
myresult = [(u'sandeep', u'checkbox'), (u'shivaraj', u'checkbox')]

for row, result in enumerate(myresult):
        self.tableWidget.insertRow(self.tableWidget.rowCount())
        for column, value in enumerate(result):
            item = QtGui.QTableWidgetItem(str(value))
            if column == 1:
                if (value == "textbox"):
                    self.cb = QtGui.QComboBox()

                    lis = ("---select---", "description", "multiple_input")
                    self.cb.addItems(lis)
                    self.cb.setCurrentIndex(1)
                    self.tableWidget.setCellWidget(row, column, self.cb)
                    self.cb.setEnabled(False)#this is for combobox disable
                elif (value == "checkbox"):
                    self.cb = QtGui.QComboBox()

                    lis = ("---select---", "description", "multiple_input")
                    self.cb.addItems(lis)
                    self.cb.setCurrentIndex(2)
                    self.tableWidget.setCellWidget(row, column, self.cb)
                    self.cb.setEnabled(False)#this is for combobox disable


            self.tableWidget.setItem(row, column, item)
            item.setFlags(QtCore.Qt.ItemIsEnabled)#this is for text non editable

            self.btn_sell = QtGui.QPushButton('Edit')

            self.btn_sell1 = QtGui.QPushButton('Delete')
            self.btn_sell1.setEnabled(False)#this for button disble

            self.tableWidget.setCellWidget(row, 2, self.btn_sell)
            self.tableWidget.setCellWidget(row, 3, self.btn_sell1)
            self.btn_sell.clicked.connect(self.edit)        
 def edit(self):
   index = self.tableWidget.currentRow()
   print index

1 Ответ

0 голосов
/ 20 марта 2019
    self.table = QtGui.QTableWidget()
    self.table.setGeometry(QtCore.QRect(220, 100, 881, 100))
    self.table.setColumnCount(4)
    self.table.setRowCount(1)  

    self.table.setColumnWidth(0, 120)
    self.table.setColumnWidth(1, 500)
    self.table.setColumnWidth(2, 120)
    self.table.setColumnWidth(3, 120)

    indexes = self.tableWidget.currentRow()

     widget = self.tableWidget.cellWidget(indexes, 2)
        # print widget

     if isinstance(widget, QtGui.QComboBox):
          h = str(widget.currentText())

          if (h == "multiple_input"):
               j = "checkbox"
          elif (h == "description"):
                j = "textbox"

    if (j == "textbox"):
                self.cb = QtGui.QComboBox()
                lis = ("---select---", "description", "multiple_input")
                self.cb.addItems(lis)
                self.cb.setCurrentIndex(1)
                self.table.setCellWidget(0, 2, self.cb)

    [enter image description here][1]elif (j == "checkbox"):
                self.cb = QtGui.QComboBox()
                lis = ("---select---", "description", "multiple_input")
                self.cb.addItems(lis)
                self.cb.setCurrentIndex(2)
                self.table.setCellWidget(0, 2, self.cb)     


    n = [str(self.tableWidget.item(indexes, 0).text())]
    for x in n:
        f = ''.join(map(str, x))
        self.table.setItem(0, 0, QtGui.QTableWidgetItem(f))



    n1 = [str(self.tableWidget.item(indexes, 1).text())]
    # print n1
    for i in n1:
        s = ''.join(i)
        self.table.setItem(0, 1, QtGui.QTableWidgetItem(s))

    self.li = QtGui.QPushButton("Update")

    self.table.setCellWidget(0, 3, self.li)
    self.li.clicked.connect(self.edit_data)

    self.table.show()

нажмите на ссылку внизу с изображением.

Edit values in separate table

Попробуйте приведенный выше код:

Выберите строку и нажмите кнопку редактирования.текущие значения строки индекса в отдельной таблице `, где мы можем редактировать и обновлять значения. Это единственный способ, которым я пытался обновить значение, он отлично работает.

...