PyQT3.3 problem

Bruce Wolk baextrawolk at pacbell.net
Thu Aug 1 00:35:17 EDT 2002


Try using self.label instead of label everywhere you use label.

On Wed, 31 Jul 2002 21:43:57 -0600, Jim
<jimb417 at NO*@!#$^&SPAMtotalspeed.net> wrote:

>I'm having trouble with this code which displays two pushbuttons and one 
>label. I want to change the text in the label when one of the buttons is 
>clicked:
>
>from qt import *
>import sys
>
>class Widget(QWidget):
>
>                def __init__(self, parent = None, name = None):
>                        QWidget.__init__(self, parent, name)
>
>                        hello = QPushButton( "Hello There!", self )
>                        hello.setGeometry(80, 80, 100, 120)
>
>                        button = QPushButton( "Text", self )
>                        button.setGeometry( 200, 200, 40, 40 )
>
>                        label = QLabel( "This is some text", self )
>                        label.setGeometry( 80, 220, 100, 20 )
>
>                        self.connect( hello, SIGNAL( "clicked()" ), qApp, SLOT( "quit()" ) )
>                        self.connect( button, SIGNAL( "clicked()" ),  qApp, 
>self.buttonClicked()) 
>
>                def buttonClicked( self ):
>                        label.setText ( "Set" )
>
>
>
>app = QApplication (sys.argv)
>a = Widget()
>a.setGeometry( 100, 100, 300, 300 )
>a.setCaption( "This is a widget")
>app.setMainWidget( a )
>a.show()
>app.exec_loop()
>
>What is the proper way to implement the custom slot correctly?  I wrote 
>this from scratch ( not using Qt Designer ) When I run this code, this 
>error pops up:
>
>File "pyExample.py", line 27 in ?
>a = Widget()
>File "pyExample.py", line 19 in __init__
>self.connect( button, SIGNAL( "clicked()" ), qApp, self.buttonClicked() )
>File "pyExample.py", line 22 in buttonClicked
>label.setText( "Changed" )
>NameError: global name 'label' not defined
>Mutex destroy failure: Device or resource busy
>
>How can 'label' be global when it is a member of the class Widget? The docs 
>aren't very clear on this. Can anyone out there give me a nudge in the right
>direction on getting this to work. If you comment out line 19, the widget 
>will display onscreen( of course the button labled "Text" will do nothing 
>when clicked, the other button closes the program ) Thanks for reading this 
>and for any assistance.
>
>Jim
>
>
>
>
>
>-- 
>Registered Linux User #269187
>http://counter.li.org
>




More information about the Python-list mailing list