如何切换窗口保持最佳提示

问题描述 投票:1回答:1

我正在尝试创建一个用户应该能够选择的小部件,如果它保持在最顶层。下面是我想要实现的示例代码。在创建窗口小部件后尝试设置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。

python pyqt window pyqt5 flags
1个回答
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()
© www.soinside.com 2019 - 2024. All rights reserved.