我正在尝试创建一个窗口小部件,如果它位于顶部,用户应该可以选择该窗口小部件。下面是我要实现的示例代码。创建窗口小部件后尝试设置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。
答案 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()