Python 如何切换窗口保持在顶部提示
我试图创建一个小部件,用户应该能够选择它是否保持在顶部。下面是我试图实现的示例代码。创建小部件后尝试设置Qt.WindowStaysOnTopHint无效: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
从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)
就足够了。不需要在=…行上输入。