[PyKDE] QTableITem Validator

Phil Thompson phil at river-bank.demon.co.uk
Sat Aug 17 15:10:01 BST 2002


Christof Baur wrote:

> Why does this python code not work ?
> I use Qt3.03, Python 2.2 and pyqt 3.0 (I am not 100% sure about the PyQt 
> version)
> 
> Please send your comments also to cbaurtx at netzero.com. Thanks.
> 
> 
> import sys
> from qt import *
> from qttable import *
> 
> 
> class Test(QWidget):
>     def __init__(self,parent = None,name = None,fl = 0):
>         QWidget.__init__(self,parent,name,fl)
> 
>         if name == None:
>             self.setName("TestValidator")
> 
>         self.resize(733,513)
>         
> self.setSizePolicy(QSizePolicy(0,0,0,0,self.sizePolicy().hasHeightForWidth()))
>         self.setMaximumSize(QSize(790,544))
>         f = QFont(self.font())
>         self.setFont(f)
>         self.setCaption(self.trUtf8("TestValidator"))
> 
> 
>         self.Item1 = []
> 
>         self.Table1 = QTable(self,"Table1")
>         self.Table1.setGeometry(QRect(35,15,616,416))
> 
>         self.Table1.setFrameShape(QTable.NoFrame)
>         self.Table1.setFrameShadow(QTable.Plain)
>         self.Table1.setLineWidth(0)
>         self.Table1.setNumRows(4)
>         self.Table1.setNumCols(4)
>         self.Table1.setShowGrid(1)
> 
> 
>         self.Item1.append ( IntTableItem(self.Table1,1,""))
> 
>         self.Item1[0].setText("123")
>         self.Table1.setItem(1,1,self.Item1[0])
> 
> class IntLineEdit (QLineEdit):
>     def __init__(self,parent = None,min = - 32000,max = 32000):
>         QLineEdit.__init__(self,parent)
>         self.setValidator(QIntValidator(min,max,self))
> 
> 
> class IntTableItem(QTableItem):
>     def createEditor(self):
>         IntLineEdit(self.table().viewport(),-5000,5000)
> 
>     def setContentFromEditor (createEditor):
>         self.setText (IntLineEdit().currentText())
> 
> 
> 
> if __name__ == "__main__":
>     a = QApplication(sys.argv)
>     QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
>     w = Test()
>     a.setMainWidget(w)
>     w.show()
>     a.exec_loop()


One obvious problem is the lack of an __init__() in IntTableItem.

Phil




More information about the PyQt mailing list