Saltycrane logo

SaltyCrane Blog

Notes on Python, Django, and web development on Ubuntu Linux

    

PyQt: How to pass arguments while emitting a signal

I often forget how to do this so I'm documenting it here for future reference. If I want to emit a signal and also pass an argument with that signal, I can use the form self.emit(SIGNAL("mySignalName"), myarg). I connect the signal to a method in the usual way. To use the argument, I merely need to specify the argument in the method definition. What often confuses me is that I don't need to specify arguments in the connect statement. The example below emits a signal didSomething and passes two arguments, "important" and "information" to the update_label method.

import sys
import time
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

#################################################################### 
class MyWindow(QWidget): 
    def __init__(self, *args): 
        QWidget.__init__(self, *args)

        self.label = QLabel(" ")
        layout = QVBoxLayout()
        layout.addWidget(self.label)
        self.setLayout(layout)
        self.connect(self, SIGNAL("didSomething"),
                     self.update_label)
        self.do_something()

    def do_something(self):
        self.emit(SIGNAL("didSomething"), "important", "information")

    def update_label(self, value1, value2):
        self.label.setText(value1 + " " + value2)

####################################################################
if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    w = MyWindow() 
    w.show() 
    sys.exit(app.exec_())

9 Comments — feed icon Comments feed for this post


#1 Anonymous commented on 2008-02-22:

Thanks. Struggled with that in the docs for ages.


#2 Fatih Arslan commented on 2008-09-18:

Thanks for the tip, your blog is great, i really do benefit a lot of. Your examples are easy to understand and easy to follow.


#3 Peter Schmidtke commented on 2010-09-14:

Thanks, finally an easy to understand post about user defined signals....not easy to find documentation for non informaticians ;)


#4 vl commented on 2011-01-08:

Thanks! Finally I found understandable example!


#5 Danny commented on 2011-03-14:

Thanks very much for providing this easy-to-understand example. You've really helped me a great deal.


#6 guillermo commented on 2011-03-19:

Hi, i know this post is old, but i'm struggling with this problem and your solution help but in this example you are manually emitting the signal, how can i add arguments so signals emitted by the user interaction, or how can i read who emitted the signal? thank you very much


#7 guillermo commented on 2011-03-20:

For completness sake(this site is high on google for this problem) and i hope the author do not mind, i'll leave here the link to a another solution.(look for the answer to the question)

http://stackoverflow.com/questions/5364291/how-to-pass-arguments-to-a-function-using-a-predefined-signal-in-pyqt


#8 Edlin commented on 2013-12-16:

Thanks!!! It helps a lots~


#9 mfuzoria commented on 2014-05-30:

скачать sound blaster 5.1

Эмили вошла в родительскую спальню и села смотреть телевизор, пока Даррен Слокум стирал полотенцем крем для бритья с лица. Застегивая пуговицы на рубашке, он взглянул на дочь. Все эти дни Эмили только и делала, что сидела, бессмысленно уставившись в экран телевизора широко открытыми глазами, словно находилась в состоянии транса. Оказалось, что это знаменитый праздник ирландской культуры весны и возрождения. Возрождения чего — я не понял... Был там такой тип — миссионер Патрик, который приволок откуда-то в Ирландию какое-то там христианское учение — и стал самым уважаемым святым ирландского народа. Как Ленин в России. Это мне Шура еще рассказывал со своей обычной усмешечкой.

http://node1.ru.agropiese.md/raznoe/baza-dannyh-jiteley-rossii-skachat.html - база данных жителей россии скачать

abbyy lingvo x3 скачать

Отсутствовала она недолго. Газная пришла с Пунгрой и слугой купца. – Откуда взяли! – фыркнула она. – Из Интернета, наверное! Представляешь, Оль?!

http://xin.vizagroup.ru/gallery/data/2244.jpg http://node27.ru.ys-musicschool-1.ru/avtorskoe/nensi-duarte-slide-ology-skachat.html - нэнси дуарте slide ology скачать — Я ему, а он… скотина…

Post a comment

Required
Required, but not displayed
Optional

Format using Markdown. (No HTML.)
  • Code blocks: prefix each line by at least 4 spaces or 1 tab (and a blank line before and after)
  • Code span: surround with backticks
  • Blockquotes: prefix lines to be quoted with >
  • Links: <URL>
  • Links w/ description: [description](URL)
Created with Django | Hosted by Linode