Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 如何子类化QTableWidgetItem_Python_Pyside - Fatal编程技术网

Python 如何子类化QTableWidgetItem

Python 如何子类化QTableWidgetItem,python,pyside,Python,Pyside,下面的程序是一个简化的示例,它试图将电子表格示例翻译成Python和PySide。我试图对QTableWidgetItem类进行子类化,以便为QTableWidget提供我自己类型的元素 import sys from PySide.QtGui import QApplication, QTableWidget, QTableWidgetItem class Cell(QTableWidgetItem): def __init__(self, *args, **kwargs):

下面的程序是一个简化的示例,它试图将电子表格示例翻译成Python和PySide。我试图对
QTableWidgetItem
类进行子类化,以便为
QTableWidget
提供我自己类型的元素

import sys

from PySide.QtGui import QApplication, QTableWidget, QTableWidgetItem

class Cell(QTableWidgetItem):
    def __init__(self, *args, **kwargs):
        super(Cell, self).__init__(*args, **kwargs)

    def clone(self):
        c = Cell()
        return c

class Spreadsheet(QTableWidget):
    def __init__(self, parent=None):
        super(Spreadsheet, self).__init__(parent)
        self.setItemPrototype(Cell())
        self.clear()

    def clear(self):
        self.setRowCount(0)
        self.setColumnCount(0)
        self.setRowCount(999)
        self.setColumnCount(26)
        for i in range(0, 26):
            item = QTableWidgetItem()
            item.setText(chr(ord('A') + i))
            self.setHorizontalHeaderItem(i, item)
        self.setCurrentCell(0, 0)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    s = Spreadsheet()
    s.show()
    sys.exit(app.exec_())
如果我单击一个单元格,输入一个字符,然后单击第二个单元格,Python解释器就会崩溃

我阅读并尝试了一些变体,例如删除
单元格。
方法的参数或在
clone()
中将
self
传递给
Cell()
,但结果总是一样的


我正在使用Python2.7.3Win32和PySide1.1.2。我做错了什么?

您的代码看起来完全正常,因此PySide中似乎有一个bug。使用PyQt4,相同的代码运行良好。