Как переключить окно остается подсказкой - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь создать виджет, который пользователь сможет выбрать, если он остается сверху.Ниже приведен пример кода того, чего я пытаюсь достичь.Попытка установить 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.

1 Ответ

1 голос
/ 13 апреля 2019

Ваша 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()
...