如何切换窗口保持在顶部欣

2024-10-08 21:17:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个小部件,用户应该能够选择,如果它停留在顶部。下面是我试图实现的示例代码。创建小部件后尝试设置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_()

操作系统是ubuntu18.04。你知道吗


Tags: fromimportapp部件showqtwinpyqt5
1条回答
网友
1楼 · 发布于 2024-10-08 21:17:24

您的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()

相关问题 更多 >

    热门问题