Closing a window
The obvious way to how to close a window is to click on the x mark on the titlebar. In the next example, we will show how we can programatically close our window. We will briefly touch signals and slots.
The following is the constructor of a QtGui.QPushButton
that we will use in our example.
QPushButton(string text, QWidget parent = None)
The text
parameter is a text that will be displayed on the button. The parent
is a widget on which we place our button. In our case it will be a QtGui.QWidget
.
#!/usr/bin/python # -*- coding: utf-8 -*- """ ZetCode PyQt4 tutorial This program creates a quit button. When we press the button, the application terminates. 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): qbtn = QtGui.QPushButton('Quit', self) qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit) qbtn.resize(qbtn.sizeHint()) qbtn.move(50, 50) self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Quit button') self.show() def main(): app = QtGui.QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()
In this example, we create a quit button. Upon clicking on the button, the application terminates.
from PyQt4 import QtGui, QtCore
An object from the QtCore
module will be needed. Therefore, we import the module.
qbtn = QtGui.QPushButton('Quit', self)
We create a push button. The button is an instance of the QtGui.QPushButton
class. The first parameter of the constructor is the label of the button. The second parameter is the parent widget. The parent widget is the Example
widget, which is a QtGui.QWidget
by inheritance.
qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
The event processing system in PyQt4 is built with the signal & slot mechanism. If we click on the button, the signal clicked
is emitted. The slot can be a Qt slot or any Python callable. TheQtCore.QCoreApplication
contains the main event loop. It processes and dispatches all events. Theinstance()
method gives us its current instance. Note that QtCore.QCoreApplication
is created with theQtGui.QApplication
. The clicked signal is connected to the quit()
method which terminates the application. The communication is done between two objects: the sender and the receiver. The sender is the push button, the receiver is the application object.
Figure: Quit button