[PyKDE] 4.0 (snapshot-20031202-SIP4-132)

Gerard Vermeulen gvermeul at grenoble.cnrs.fr
Wed Dec 3 22:10:01 GMT 2003


Phil, the next little program is a stripped down example from PyQwt.

It crashes PyQt with 3 mouse clicks:

- click the main window to bring up the ConfigDiag
- click the dismiss button
- click the dismiss button

Output on the terminal:

[packer at venus junk]$ ./CurveDemo3.py
Loading required GL library /usr/X11R6/lib/libGL.so.1.3.401
TypeError: insufficient number of arguments to QPushButton.mouseReleaseEvent()
Segmentation fault
[packer at venus junk]$

There is some interaction with the timer, but I am feeling hungry .... 

---------------------------------------------------------------------------------
#!/usr/bin/env python

import sys
from qt import *

class ConfigDiag(QDialog):

    def __init__(self, parent = None, name = None):
        QDialog.__init__(self, parent, name)
        layout = QGridLayout(self, 1, 1, 11, 6)
        self.ctSpeed = QSpinBox(20, 2000, 20, self)
        layout.addWidget(self.ctSpeed, 0, 0) 
        btDismiss = QPushButton("Dismiss", self)
        layout.addWidget(btDismiss,1,0)
        self.connect(btDismiss, SIGNAL("clicked()"), self.accept)
        self.connect(self.ctSpeed, SIGNAL("valueChanged(int)"), self.chgTSpeed)

    # slots
    def setTSpeed(self, t):
        self.ctSpeed.setValue(t)

    def chgTSpeed(self, t):
        self.emit(PYSIGNAL("tSpeedChg"), (t,))


class CurveDemo(QFrame):

    def __init__(self, *args):
        apply(QFrame.__init__, (self,) + args)
        self.setCaption("Click my window to configure me")
        # timer config
        self.cfg = ConfigDiag()
        self.connect(self.cfg, PYSIGNAL("tSpeedChg"), self.setTSpeed)
        # start timer
        self.tid = None
        self.setTSpeed(100)
        self.cfg.setTSpeed(100)

    def mousePressEvent(self, e):
        if not self.cfg.isVisible():
            self.cfg.show()
        else:
            self.cfg.hide()

    def setTSpeed(self, milliseconds):
        if self.tid:
            self.killTimer(self.tid)
        self.tid = self.startTimer(int(milliseconds * 1.0)) 

    def drawContents(self, painter):
        r = self.contentsRect()

    def timerEvent(self, event):
        self.newValues()
        self.repaint()
        
    def newValues(self):
        pass

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = CurveDemo()
    demo.resize(300, 300)
    demo.show()
    app.setMainWidget(demo)
    app.exec_loop()
---------------------------------------------------------------------------------

Gerard




More information about the PyQt mailing list