Python 使用ctrl+;使单元格可编辑(使用不可编辑的单元格创建表格后);点击
我有一个QTableWidget,当程序以不可编辑和不可选择的单元格启动时创建。当我右键单击它们时,单元格上的数字会增加1,这很好 我现在想做的是,如果我按住ctrl键并单击某个单元格,该单元格将变为可编辑单元格,我可以在其中写入数字,当输入数字时,该单元格将再次变为不可编辑 到目前为止,我对修饰符没有任何问题,它们可以工作,但我无法更改单元格的标志Python 使用ctrl+;使单元格可编辑(使用不可编辑的单元格创建表格后);点击,python,pyqt,qtablewidget,Python,Pyqt,Qtablewidget,我有一个QTableWidget,当程序以不可编辑和不可选择的单元格启动时创建。当我右键单击它们时,单元格上的数字会增加1,这很好 我现在想做的是,如果我按住ctrl键并单击某个单元格,该单元格将变为可编辑单元格,我可以在其中写入数字,当输入数字时,该单元格将再次变为不可编辑 到目前为止,我对修饰符没有任何问题,它们可以工作,但我无法更改单元格的标志 def mousePressEvent(self,event): modifiers = event.modifiers() i
def mousePressEvent(self,event):
modifiers = event.modifiers()
it = self.itemAt(event.pos())
if modifiers & QtCore.Qt.ControlModifier:
item.setFlags(itemIsEditable)
else:
if event.button() == QtCore.Qt.LeftButton:
it.setText(str(round(float(it.text())+1)))
elif event.button() == QtCore.Qt.RightButton:
it.setText(str(round(float(it.text()) - 1)))
您必须使用
editItem()
方法
def mousePressEvent(self,event):
modifiers = event.modifiers()
it = self.itemAt(event.pos())
if modifiers & QtCore.Qt.ControlModifier:
it.setFlags(it.flags() | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable)
self.editItem(it)
else:
if event.button() == QtCore.Qt.LeftButton:
it.setText(str(round(float(it.text())+1)))
elif event.button() == QtCore.Qt.RightButton:
it.setText(str(round(float(it.text()) - 1)))
我相信你想做的是触发对该项目的编辑。如果这是正确的,您需要在设置标志后调用方法:
editItem(item)
谢谢Dmtry,这正是我需要的!我不知道那个方法!非常感谢,它完全符合我的需要!