[PyQt] SubClassed checkbox signal problem
peter
peter at liedler.at
Thu Sep 9 21:04:07 BST 2010
A big thank you, Phil!
That did the trick.
Peter
---------- Original Message ----------------------------------
From: Phil Thompson <phil at riverbankcomputing.com>
Date: Thu, 09 Sep 2010 20:34:50 +0100
On Thu, 9 Sep 2010 21:12:26 +0200, Peter Liedler
<peter at liedler.at> wrote:
> Hello,
>
> I am testing the current beta of (k)ubuntu 10.10 maverick
meerkat and
> recognized that my pyqt application stopped to work properly.
>
> After some time of research I could tie the problem down to
the
following
> situation:
>
> I have a qcheckbox in a subclassed qobject and connected the
sigal
> statechanged which works perfectly in the previous versions.
E.g. ubuntu
> lucid.
> I also checked if the signal works without a subclass - it
does on both
> pyqt
> versions.
>
> There might be a problem in my code as well which was not
causing
> malfunction
> before, so please see the code below. It could also be a bug
in the nerw
> version?
>
> Can you take a look into this and help me?
You need to call QObject.__init__() from
workLoadItem.__init__().
Phil
> Thank you
>
> Peter
>
> ------------------------------------
>
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
>
> # test
> #
>
>
> #signal stateChanged of subclass is called correctly in
python-qt4
> 4.7.3-1ubuntu2~lucid1~ppa3 on lucid lynx
> #
> #does not work on maverick meerkat beta: Version: 4.7.4-
0ubuntu1
>
> import sys, os
> import locale
> from os.path import dirname, join
> import time
>
> try:
> from PyQt4.QtGui import *
> from PyQt4 import QtCore
> from PyQt4.QtCore import *
> import urllib
> except:
> print "Loading of python libraries failed, please install
python-qt4"
> exit(1)
>
>
> class vidgrabMainWindow(QMainWindow):
> """ Main window of jase """
> def __init__(self, parent=None):
> QMainWindow.__init__(self, parent)
> self.setMinimumSize(800,200)
> self.setupWindow()
>
> def setupWindow(self):
> """ Initialize main widget """
>
> self.mainWidget = QWidget(self)
> self.setCentralWidget(self.mainWidget)
>
> self.buttonLayout = QGridLayout()
> self.buttonLayout.setSpacing(3)
> self.mainWidget.setLayout(self.buttonLayout)
> self.checkSub = workLoadItem(self)
>
> class workLoadItem(QObject):
>
> def __init__(self, parent=None):
> self.parent = parent
> self.name = QLabel()
> self.name.setText("...")
> self.checkBox = QCheckBox()
> self.checkBox.setText("Test")
> self.connect(self.checkBox, SIGNAL("stateChanged(int)"),
> self.checkCalled)
> self.parent.buttonLayout.addWidget(self.checkBox, 0, 1)
>
> def checkCalled(self, i = None):
> if i == 2:
> self.checkBox.setText("Checked")
> elif i == 0:
> self.checkBox.setText("UnChecked")
> else:
> self.checkBox.setText("None")
>
>
> def main():
> app = QApplication(sys.argv)
> app.setOrganizationName("jackcy")
> app.setOrganizationDomain("...")
> app.setApplicationName("test")
> app.connect(app, SIGNAL("lastWindowClosed()"), app,
SLOT("quit()"))
>
> form = vidgrabMainWindow()
> form.show()
>
> app.exec_()
>
> def quit(self):
> QApplication.quit(self)
>
>
> if __name__ == '__main__':
> """ Main function """
> main()
>
>
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
More information about the PyQt
mailing list