将`QTableWidget`中的整个列设置为python中的只读 - python

我想将表格中的列设置为只读!我尝试了所有可能的标志组合都没有成功

    item = QtGui.QTableWidgetItem()
    from operator import xor
    item.setFlags(xor(item.flags(),QtCore.Qt.ItemIsEditable))
    self.Table.setHorizontalHeaderItem(4, item)

我也尝试使用and not!=^运算符,但列项目仍可编辑

更新资料
我想我误会了!我认为当我使用insertRow()之类的操作将一列中的Horizo​​ntalHeaderItem设置为不可编辑时,该列中的所有新项目将自动变为不可编辑。
插入新行后,我已经对每个新添加的项目执行了这些功能!

        tableWidget.insertRow(row+1)
        if  tableWidget is self.myTable:
            item = QtGui.QTableWidgetItem()
            item.setFlags(item.flags() != QtCore.Qt.ItemIsEditable)
            tableWidget.setItem(row+1, 4, item)

我认为更好(但更复杂)的解决方案是使用setItemDelegateForColumn()QtGui.QItemDelegate()创建只读的costum QTableWidgetItem,每次插入或创建新行时都会添加

编辑
好吧,我尝试如上所述使用setItemDelegateForColumn()QtGui.QItemDelegate(),但是出现了以下警告

> python main.py
sys:1: RuntimeWarning: Invalid return value in function QItemDelegate.createEdit
or, expected PySide.QtGui.QWidget, got PySide.QtGui.QTableWidgetItem.

我的代码是

class QTableWidgetDisabledItem(QtGui.QItemDelegate):
    """
    """
    def __init__(self, parent):

        QtGui.QItemDelegate.__init__(self, parent)

    def createEditor(self, parent, option, index):
        item = QtGui.QTableWidgetItem()
        item.setFlags(item.flags() != QtCore.Qt.ItemIsEditable)
        return item

    def setEditorData(self, editor, index):
        editor.blockSignals(True)
        editor.setData(index, editor.text())
        editor.blockSignals(False)

    def setModelData(self, editor, model, index):
        model.setData(index, editor.text())

并在MainWindow中

    self.Size = QTableWidgetDisabledItem(self.MyTable)
    self.MyTable.setItemDelegateForColumn(4,self.Size)

这是个好主意...

参考方案

我使用QLineEditor

class QTableWidgetDisabledItem(QtGui.QItemDelegate):
    """
    Create a readOnly QTableWidgetItem
    """
    def __init__(self, parent):

        QtGui.QItemDelegate.__init__(self, parent)

    def createEditor(self, parent, option, index):
        item = QtGui.QLineEdit(parent)
        item.setReadOnly(True)
        #item.setEnabled(False)
        return item

    def setEditorData(self, editor, index):
        editor.blockSignals(True)
        editor.setText(index.model().data(index))
        editor.blockSignals(False)

    def setModelData(self, editor, model, index):
        model.setData(index, editor.text())

然后只需按照以下方式使用它

self.Size = QTableWidgetDisabledItem(self.MyTable)
self.MyTable.setItemDelegateForColumn(4,self.Size)

将(行)函数应用于DataFrame会更改列类型 - python

列类型意外更改有问题,如下所示进行了精炼。 x列是浮点数,icol列是整数。当应用testfunction(不执行任何操作)时,列icol更改为类型float64,如以下代码所示:df = pd.DataFrame({'x':[1000, -1000, 1.0]}) df['icol'] = 1 print(df.dt…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python:图像处理可产生皱纹纸效果 - python

也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…