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