Python 如何切换窗口保持在顶部提示

Python 如何切换窗口保持在顶部提示,python,pyqt,window,pyqt5,flags,Python,Pyqt,Window,Pyqt5,Flags,我试图创建一个小部件,用户应该能够选择它是否保持在顶部。下面是我试图实现的示例代码。创建小部件后尝试设置Qt.WindowStaysOnTopHint无效: 从PyQt5.QtWidgets导入* 从PyQt5.QtCore导入Qt app=QApplication([]) win=QWidget() def toggleTop(): win.setWindowFlags(Qt.WindowStaysOnTopHint) win.show() button=QPushButton('Top',w

我试图创建一个小部件,用户应该能够选择它是否保持在顶部。下面是我试图实现的示例代码。创建小部件后尝试设置Qt.WindowStaysOnTopHint无效:

从PyQt5.QtWidgets导入*
从PyQt5.QtCore导入Qt
app=QApplication([])
win=QWidget()
def toggleTop():
win.setWindowFlags(Qt.WindowStaysOnTopHint)
win.show()
button=QPushButton('Top',win)
按钮。单击。连接(切换顶部)
win.show()
app.exec()
但是,如果我在小部件创建过程中设置了该标志,它将非常有效:

从PyQt5.QtWidgets导入*
从PyQt5.QtCore导入Qt
app=QApplication([])
win=QWidget()
win.setWindowFlags(Qt.WindowStaysOnTopHint)
win.show()
app.exec()

操作系统是Ubuntu 18.04。

您的
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()
win.setWindowFlags(win.windowFlags()^Qt.WindowStaysOnTopHint)
就足够了。不需要在=…行上输入