from PyQt5.QtWidgets import QPushButton, QWidget, QApplication, QHBoxLayout
from PyQt5.QtCore import QObject
class Button( QPushButton) :
def __init__ ( self , callback) :
super ( Button, self ) .__init__ ( )
self .setText ( "Hi" )
#1
self .clicked .connect ( lambda : callback( ) )
#2
self .callback = callback
self .clicked .connect ( self .callback )
class Example( QObject) :
def __init__ ( self ) :
super ( Example, self ) .__init__ ( )
self .btn = Button( self .callback )
def callback( self ) :
print ( "callback" )
class Widget( QWidget) :
def __init__ ( self ) :
super ( Widget, self ) .__init__ ( )
ex_ = Example( )
h_box = QHBoxLayout( )
h_box.addWidget ( ex_.btn )
self .setLayout ( h_box)
self .show ( )
if __name__ == "__main__" :
import sys
app = QApplication( sys .argv )
wd = Widget( )
sys .exit ( app.exec_ ( ) )
ZnJvbSBQeVF0NS5RdFdpZGdldHMgaW1wb3J0IFFQdXNoQnV0dG9uLCBRV2lkZ2V0LCBRQXBwbGljYXRpb24sIFFIQm94TGF5b3V0CmZyb20gUHlRdDUuUXRDb3JlIGltcG9ydCBRT2JqZWN0CgoKY2xhc3MgQnV0dG9uKFFQdXNoQnV0dG9uKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY2FsbGJhY2spOgogICAgICAgIHN1cGVyKEJ1dHRvbiwgc2VsZikuX19pbml0X18oKQoKICAgICAgICBzZWxmLnNldFRleHQoIkhpIikKCiAgICAgICAgIzEKICAgICAgICBzZWxmLmNsaWNrZWQuY29ubmVjdChsYW1iZGE6IGNhbGxiYWNrKCkpCgogICAgICAgICMyCiAgICAgICAgc2VsZi5jYWxsYmFjayA9IGNhbGxiYWNrCiAgICAgICAgc2VsZi5jbGlja2VkLmNvbm5lY3Qoc2VsZi5jYWxsYmFjaykKCgpjbGFzcyBFeGFtcGxlKFFPYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHN1cGVyKEV4YW1wbGUsIHNlbGYpLl9faW5pdF9fKCkKCiAgICAgICAgc2VsZi5idG4gPSBCdXR0b24oc2VsZi5jYWxsYmFjaykKCiAgICBkZWYgY2FsbGJhY2soc2VsZik6CiAgICAgICAgcHJpbnQoImNhbGxiYWNrIikKCgpjbGFzcyBXaWRnZXQoUVdpZGdldCk6CiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc3VwZXIoV2lkZ2V0LCBzZWxmKS5fX2luaXRfXygpCgogICAgICAgIGV4XyA9IEV4YW1wbGUoKQoKICAgICAgICBoX2JveCA9IFFIQm94TGF5b3V0KCkKCiAgICAgICAgaF9ib3guYWRkV2lkZ2V0KGV4Xy5idG4pCgogICAgICAgIHNlbGYuc2V0TGF5b3V0KGhfYm94KQoKICAgICAgICBzZWxmLnNob3coKQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBpbXBvcnQgc3lzCgoKICAgIGFwcCA9IFFBcHBsaWNhdGlvbihzeXMuYXJndikKICAgIHdkID0gV2lkZ2V0KCkKICAgIHN5cy5leGl0KGFwcC5leGVjXygpKQoK