Ensuring PyQt Windows are Always on Top in Python

Posted by


In this tutorial, we will learn how to create a PyQt application that stays on top of all other windows on the screen. Having an always on top window can be useful for applications that require constant visibility, such as a timer, a reminder, or a widget that provides real-time information.

To achieve this, we will use the setWindowFlags method of the QMainWindow class in PyQt. This method allows us to set various window flags, including the flag that makes the window stay on top. Let’s get started!

Step 1: Install PyQt5
First, make sure you have PyQt5 installed on your system. You can install it using pip by running the following command:

pip install PyQt5

Step 2: Create a PyQt application
Next, create a new Python script and import the necessary modules:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

Then, create a class for our main window:

class AlwaysOnTopWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.setWindowTitle('Always On Top Window')
        self.setGeometry(100, 100, 400, 200)

In this class, we define a constructor that calls the initUI method to set up the window. We set the title of the window and its size using the setWindowTitle and setGeometry methods.

Step 3: Set the window flag to stay on top
To make the window always stay on top, we need to set the Qt.WindowStaysOnTopHint flag. This flag ensures that the window is displayed above all other windows on the screen. Add the following line to the initUI method:

self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint)

Don’t forget to import the Qt module at the top of your script:

from PyQt5.QtCore import Qt

Step 4: Run the PyQt application
Finally, create an instance of the AlwaysOnTopWindow class and run the PyQt application:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = AlwaysOnTopWindow()
    window.show()
    sys.exit(app.exec_())

When you run the script, you should see a window that stays on top of all other windows on the screen. You can move the window around, resize it, and interact with it like any other window.

That’s it! You have successfully created a PyQt application that stays on top. Feel free to customize the window further by adding widgets, buttons, or any other elements you need. PyQt’s rich set of widgets and layout managers allows you to create powerful and visually appealing applications with ease. Happy coding!