Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用ctrl+;使单元格可编辑(使用不可编辑的单元格创建表格后);点击_Python_Pyqt_Qtablewidget - Fatal编程技术网

Python 使用ctrl+;使单元格可编辑(使用不可编辑的单元格创建表格后);点击

Python 使用ctrl+;使单元格可编辑(使用不可编辑的单元格创建表格后);点击,python,pyqt,qtablewidget,Python,Pyqt,Qtablewidget,我有一个QTableWidget,当程序以不可编辑和不可选择的单元格启动时创建。当我右键单击它们时,单元格上的数字会增加1,这很好 我现在想做的是,如果我按住ctrl键并单击某个单元格,该单元格将变为可编辑单元格,我可以在其中写入数字,当输入数字时,该单元格将再次变为不可编辑 到目前为止,我对修饰符没有任何问题,它们可以工作,但我无法更改单元格的标志 def mousePressEvent(self,event): modifiers = event.modifiers() i

我有一个QTableWidget,当程序以不可编辑和不可选择的单元格启动时创建。当我右键单击它们时,单元格上的数字会增加1,这很好

我现在想做的是,如果我按住ctrl键并单击某个单元格,该单元格将变为可编辑单元格,我可以在其中写入数字,当输入数字时,该单元格将再次变为不可编辑

到目前为止,我对修饰符没有任何问题,它们可以工作,但我无法更改单元格的标志

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,这正是我需要的!我不知道那个方法!非常感谢,它完全符合我的需要!