如何在Qtablewidget PYQT python中禁用除一列之外的所有列

2024-10-01 15:35:33 发布

您现在位置:Python中文网/ 问答频道 /正文

问题陈述: 禁用特定列并基于当前行索引启用特定行。在

我正在处理Qtablewidget,我尝试了以下代码,这个代码可以很好地禁用。 我想在行索引的基础上启用tablewidget行内容。 当我点击按钮时,该行应该被启用。我是stackoverflow的新手,请指导我。我正在尝试启用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

Tags: 代码selfforvaluecolumnthisitemrow
1条回答
网友
1楼 · 发布于 2024-10-01 15:35:33
    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

请尝试上述代码:

选择行并单击edit按钮,它将把当前的索引行值放入单独的表中,在那里我们可以编辑和更新价值观。这个是我尝试更新值的一种方法,它运行良好。在

相关问题 更多 >

    热门问题