Clean PyQt selection comboBox

Threader Slash threaderslash at gmail.com
Thu Nov 5 17:55:56 EST 2009


> ---------- Original message ----------
> From: MRAB <python at mrabarnett.plus.com>
> To: python-list at python.org
> Date: Thu, 05 Nov 2009 15:37:49 +0000
> Subject: Re: Clean PyQt selection comboBox
> Threader Slash wrote:
>
>> Hello Everybody, 8)
>>
>> I am using Qt and need to build a selection comboBox -- e.g.:
>> http://www.java2s.com/Tutorial/VBImages/ComboBoxSelectionEventAddValue.PNG.
>>
>> The problem is - after one choice was made, and the code run, for the next
>> time the user select a different choice, both, the present and all past
>> choices run. See what I mean: ;(
>>
>> Code:
>>
>> selected color - blue
>> we are on runBlue
>>
>> selected color - red
>> we are on runBlue
>> we are on runRed
>>
>>
>> Here is the code:
>>
>> .........................................
>> QtCore.QObject.connect(self.selectComboBox,
>>  QtCore.SIGNAL("currentIndexChanged(QString)"),
>>  self.combo_activateInput)   .........................................
>>
>> def combo_activateInput(self):
>>        color=unicode(self.selectComboBox.currentText())
>>        if(color == "blue"):
>>            print "selected color - blue"
>>            QtCore.QObject.connect(self.okButton,
>> QtCore.SIGNAL("clicked()"), self.combo_runBlue)
>>
>>        if(color == "red"):
>>            print "selected color - red"
>>            QtCore.QObject.connect(self.okButton,
>> QtCore.SIGNAL("clicked()"), self.combo_runRed)                      if(color
>> == "yellow"):
>>
>>            print "selected color - yellow"
>>            QtCore.QObject.connect(self.okButton,
>> QtCore.SIGNAL("clicked()"), self.combo_runYellow)
>>        del color .........................................
>>
>> def combo_runBlue(self):
>>        print "we are on runBlue"
>>
>> def combo_runRed(self):
>>        print "we are on runRed"
>>
>> def combo_runYellow(self):
>>        print "we are on runYellow"
>>
>> I run "del color" to clean the content returned by
>> selectComboBox.currentText, but it didn't clean the content indeed.
>>
>>  "del color" doesn't "clean the content", it just says "forget this
> name", in this case "forget the local variable called 'color'".
>
>  So, any suggestion? All comments and suggestions are highly appreciated.
>> :D :D :D
>>
>>  The ".connect" method connects something each time it's called. If you
> call it multiple times then multiple things will be connected.
>
> Try using ".disconnect" to disconnect what you no longer want connected.
>
> ---------- ----------
>

Thanks Man! You saved the day. It solved the problem...
................................................................
    def combo_runBlue(self):
        print "we are on runBlue"
        QtCore.QObject.disconnect(self.okButton, QtCore.SIGNAL("clicked()"),
self.combo_runBlue)
................................................................
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20091106/a4a9f46e/attachment-0001.html>


More information about the Python-list mailing list