Last Updated on 2021-05-19 by Clay
我曾經以為讓程式的視窗在『最前方』或『最後方』(或是你習慣稱『最上方』與『最下方』)是一件相當麻煩的事情,但在 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。
Pingback: 【PyQt5】Day 22 - PyQt 視窗的個性化/屬性控制 setWindowFlags,禁止放大縮小、永遠顯示於最上層/最下層 - 嗡嗡的隨手筆記