The following code walks you through the steps to create an empty GUI window.
# basic_window.py # Import necessary modules import sys from PyQt5.QtWidgets import QApplication, QWidget class EmptyWindow(QWidget): ''' Create a new class, EmptyWindow, which inherits from other PyQt modules, in this case from the QWidget class. Inheriting from QWidget means we have access to all the attributes to create GUIs using PyQt, but we also can add our own variables and methods in our new class. ''' def __init__(self): super().__init__() ''' create default constructor for QWidget; super is used to access methods from parent class ''' self.initializeUI() def initializeUI(self): """ Initialize the window and display its contents to the screen. """ self.setGeometry(100, 100, 400, 300) self.setWindowTitle('Empty Window in PyQt') self.show() # Run program if __name__ == '__main__': app = QApplication(sys.argv) # Create instance of QApplication class window = EmptyWindow() # Create instance of EmptyWindow class sys.exit(app.exec_()) # Start the event loop
Your initial window should look similar to the one in the following figure depending upon your operating system.
Walking through the code, we first start by importing the
sys and PyQt5 modules that we need to create a window. We commonly use
sys in order to pass command-line arguments to our applications and to close them.
QtWidgets module provides a set of UI (User Interfaces) elements that can be used to create desktop-style GUIs. From the
QtWidgets module, we import two classes,
QWidget. You only need to create a single instance of the
QApplication class, which manages the application’s main event loop, flow, initialization, and finalization, as well as session management.
Take a quick look at
app = QApplication(sys.argv)
QApplication takes as an argument
sys.argv. You can also pass in an empty list if you know that your program will not be taking any command-line arguments using
app = QApplication()
Next we create a window object that inherits from the class we created,
EmptyWindow. Our class actually inherits from
QWidget, which is the base class for which all other user interface objects are derived.
We need to call the
show() method on the window object to display it to the screen.
This is located inside the
initializeUI() function in our
EmptyWindow class. You will notice
app.exec_() in the final line of the program. This function starts the event loop and will remain here until you quit the application.
sys.exit() ensures a clean exit.
If all of this is a little confusing as to why we have to create an application before
we create the window, think of
QApplication as the frame that contains our window.
The window, our GUI, is created using
QWidget. Before we can create our GUI, we must create an instance of
QApplication that we can place window in.
Modifying the Window
EmptyWindow class contains a function,
initializeUI(), that creates the window based upon the parameters we specify.
setGeometry() defines the location of the window on your computer screen and
its dimensions, width and height. So the window we just started is located at
y=100 in the window and has
setWindowTitle() is used to change the title of our window.