Skip to content

[PyQt5] 讓窗口位於螢幕最前方或最後方

我曾經以為讓程式的視窗在『最前方』或『最後方』(或是你習慣稱『最上方』與『最下方』)是一件相當麻煩的事情,但在 PyQt5 當中幾乎只要一行指令就可以完成這個功能了。

讓視窗永遠保持在最前方呢,可以讓我們製作讓使用者可以隨時拉出的界面、平時隱藏在螢幕外,比如之前頗負名氣的『迅雷』,『百度下載』之類的小工具。

讓視窗永遠保持在最後方呢,則可以製作桌面時鐘之類的——至少我自己是拿來這樣用啦。

那廢話不多說,馬上來講講該怎麼使用 setWindowFlags 來設定視窗位置吧!

如果想要了解更多關於 PyQt5 的事情,可以參考他們的 PyPI:https://pypi.org/project/PyQt5/

如果想要觀看一些 PyQt5 的教學,也許可以參考我之前寫的 PyQt5 系列


setWindowFlags

首先,假設我們有一個這樣的程式:

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *


class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.resize(200, 100)

        self.label_display = QLabel(self)
        self.label_display.setGeometry(0, 0, 100, 10)
        self.label_display.setText('Hello TEST!!!')


if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())



Output:

如果想要讓這個視窗永遠保持在最前方:

from PyQt5.QtCore import *



首先 Import QtCore,最主要是需要其中的 Qt 模組。

然後我們在程式初始化的地方寫上:

self.setWindowFlags(Qt.WindowStaysOnTopHint)



你可以測試看看,程式的視窗是不是一直保持在最前方了呢?

反之,如果希望程式保持在最後方當桌面小工具(或其他功能):

self.setWindowFlags(Qt.WindowStaysOnBottomHint)



這樣就可以了!

簡單來講,就是設定 setWindowFlags(),然後裡面分別決定是要放入 Qt.WindowStaysOnBottomHint 或是 Qt.WindowStaysOnTopHint。

Leave a Reply