如何切换窗口停留在最上面的提示

时间:2019-04-12 14:48:00

标签: python pyqt window pyqt5 flags

我正在尝试创建一个窗口小部件,如果它位于顶部,用户应该可以选择该窗口小部件。下面是我要实现的示例代码。创建窗口小部件后尝试设置Qt.WindowStaysOnTopHint无效:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

app = QApplication([])
win = QWidget()

def toggleTop():
    win.setWindowFlags(Qt.WindowStaysOnTopHint)
    win.show()

button = QPushButton('Top', win)
button.clicked.connect(toggleTop)
win.show()
app.exec_()

但是,如果我在窗口小部件创建过程中设置了标记,它就可以正常工作:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

app = QApplication([])
win = QWidget()
win.setWindowFlags(Qt.WindowStaysOnTopHint)
win.show()
app.exec_()

操作系统是Ubuntu 18.04。

1 个答案:

答案 0 :(得分:1)

您的toggleTop函数当前正在每次用相同的标志覆盖所有窗口标志。要切换单个窗口标志,您需要根据标志的当前状态显式重置它:

def toggleTop():
    # get the current state of the flag
    on = bool(win.windowFlags() & Qt.WindowStaysOnTopHint)
    # toggle the state of the flag
    win.setWindowFlag(Qt.WindowStaysOnTopHint, not on)
    win.show()