[PyQt] SubClassed checkbox signal problem
Peter Liedler
peter at liedler.at
Thu Sep 9 20:12:26 BST 2010
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?
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()
More information about the PyQt
mailing list