我有以下代码定义我的应用程序的gui
class Ui (object):
def setupUi():
self.tableName = QtGui.QTableWidget(self.layoutWidget_20)
self.tableName.setObjectName(_fromUtf8("twHistoricoDisciplinas"))
self.tableName.setColumnCount(4)
self.tableName.setRowCount(3)
以及我的应用中的以下代码
class MainWindow(QtGui.QMainWindow):
def __init__(self):
self.ui = Ui()
self.ui.setupUi(self)
self.createtable()
#creating a tw cell
def cell(self,var=""):
item = QtGui.QTableWidgetItem()
item.setText(var)
return item
def createtable(self):
rows = self.tableName.rowCount()
columns = self.tableName.columnCount()
for i in range(rows):
for j in range(columns):
item = self.cell("text")
self.ui.tableName.setItem(i, j, item)
我希望能够添加新的行和列并编辑它们,但我想锁定一些单元格。 (我已经有扩展表的代码) 如何让一些单元格只读,同时保持其他单元读写? 我发现这个链接How to make a column in QTableWidget read only?有一个C ++问题的解决方案,python解决方案是否类似?
编辑:从帖子中删除答案并粘贴为答案
答案 0 :(得分:16)
我玩了一些代码并阅读了更多文档 问题的答案是
def createtable(self):
rows = self.tableName.rowCount()
columns = self.tableName.columnCount()
for i in range(rows):
for j in range(columns):
item = self.cell("text")
# execute the line below to every item you need locked
item.setFlags(QtCore.Qt.ItemIsEnabled)
self.ui.tableName.setItem(i, j, item)
解决方案是行“item.setFlags(QtCore.Qt.ItemIsEnabled)”,您使用它将单元格属性QtCore.Qt.ItemIsEnabled设置为禁用,因此您无法选择或编辑单元格
您可以按照Qt :: ItemFlag
部分http://doc.qt.io/archives/qt-4.8/qt.html上的文档在运行时以这种方式更改其他一些属性答案 1 :(得分:9)
当没有编辑触发器时,永远不会输入QTableWidgetItem的编辑状态:
self.tableName.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
答案 2 :(得分:2)
与Sven Krüger's一样,您也可以将此方法用于 PyQt5 :
self.tableWidget.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)