zoukankan      html  css  js  c++  java
  • ZetCode PyQt4 tutorial signals and slots

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    """
    ZetCode PyQt4 tutorial 
    
    In this example, we connect a signal
    of a QtGui.QSlider to a slot 
    of a QtGui.QLCDNumber. 
    
    author: Jan Bodnar
    website: zetcode.com 
    last edited: October 2011
    """
    
    import sys
    from PyQt4 import QtGui, QtCore
    
    
    class Example(QtGui.QWidget):
        
        def __init__(self):
            super(Example, self).__init__()
            
            self.initUI()
            
        def initUI(self):
            
            lcd = QtGui.QLCDNumber(self)
            sld = QtGui.QSlider(QtCore.Qt.Horizontal, self)
    
            vbox = QtGui.QVBoxLayout()
            vbox.addWidget(lcd)
            vbox.addWidget(sld)
    
            self.setLayout(vbox)
            # Here we connect a valueChanged signal of the slider to the display slot of the lcd number.
            # The sender is an object that sends a signal. The receiver is the object that receives the signal. The slot is the method that reacts to the signal.
            sld.valueChanged.connect(lcd.display)
            
            self.setGeometry(300, 300, 250, 150)
            self.setWindowTitle('Signal & slot')
            self.show()
            
    def main():
        
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())
    
    
    if __name__ == '__main__':
        main()
    
    --------------------------------------------------------------------------------
    
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    """
    ZetCode PyQt4 tutorial 
    
    In this example, we reimplement an 
    event handler. 
    
    author: Jan Bodnar
    website: zetcode.com 
    last edited: October 2011
    """
    
    import sys
    from PyQt4 import QtGui, QtCore
    
    
    class Example(QtGui.QWidget):
        
        def __init__(self):
            super(Example, self).__init__()
            
            self.initUI()
            
        def initUI(self):      
            
            self.setGeometry(300, 300, 250, 150)
            self.setWindowTitle('Event handler')
            self.show()
            
        # In our example, we reimplement the keyPressEvent() event handler.
        def keyPressEvent(self, e):
            
            # If we click the Escape button, the application terminates.
            if e.key() == QtCore.Qt.Key_Escape:
                self.close()
            
    def main():
        
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())
    
    
    if __name__ == '__main__':
        main()
    
    --------------------------------------------------------------------------------
    
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    """
    ZetCode PyQt4 tutorial 
    
    In this example, we determine the event sender
    object.
    
    author: Jan Bodnar
    website: zetcode.com 
    last edited: October 2011
    """
    
    import sys
    from PyQt4 import QtGui, QtCore
    
    
    class Example(QtGui.QMainWindow):
        
        def __init__(self):
            super(Example, self).__init__()
            
            self.initUI()
            
        def initUI(self):      
    
            btn1 = QtGui.QPushButton("Button 1", self)
            btn1.move(30, 50)
    
            btn2 = QtGui.QPushButton("Button 2", self)
            btn2.move(150, 50)
          
            # Both buttons are connected to the same slot.
            btn1.clicked.connect(self.buttonClicked)            
            btn2.clicked.connect(self.buttonClicked)
            
            self.statusBar()
            
            self.setGeometry(300, 300, 290, 150)
            self.setWindowTitle('Event sender')
            self.show()
            
        def buttonClicked(self):
          
            # We determine the signal source by calling the sender() method. In the statusbar of the application, we show the label of the button being pressed.
            sender = self.sender()
            self.statusBar().showMessage(sender.text() + ' was pressed')
            
    def main():
        
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())
    
    
    if __name__ == '__main__':
        main()
    
    --------------------------------------------------------------------------------
    
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    """
    ZetCode PyQt4 tutorial 
    
    In this example, we show how to emit a
    signal. 
    
    author: Jan Bodnar
    website: zetcode.com 
    last edited: January 2015
    """
    
    import sys
    from PyQt4 import QtGui, QtCore
    
    
    class Communicate(QtCore.QObject):
        
        # A signal is created with the QtCore.pyqtSignal() as a class attribute of the external Communicate class.
        closeApp = QtCore.pyqtSignal() 
        
    
    class Example(QtGui.QMainWindow):
        
        def __init__(self):
            super(Example, self).__init__()
            
            self.initUI()
            
            
        def initUI(self):      
    
            # The custom closeApp signal is connected to the close() slot of the QtGui.QMainWindow.
            self.c = Communicate()
            self.c.closeApp.connect(self.close)       
            
            self.setGeometry(300, 300, 290, 150)
            self.setWindowTitle('Emit signal')
            self.show()
            
            
        # When we click on the window with a mouse pointer, the closeApp signal is emitted. The application terminates.
        def mousePressEvent(self, event):
            
            self.c.closeApp.emit()
            
            
    def main():
        
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())
    
    
    if __name__ == '__main__':
        main()
  • 相关阅读:
    Beta 冲刺(1/7)
    福大软工 · BETA 版冲刺前准备(团队)
    福大软工 · 第十一次作业
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    个人作业——软件工程实践总结作业
    Beta 答辩总结
    Beta 冲刺 (7/7)
    Beta 冲刺 (6/7)
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/4851613.html
Copyright © 2011-2022 走看看