python – Como fazer uma Janela ficar sempre acima das outras no PYQT5?

Não existe garantia que vá ficar no topo sempre, ainda mais se outros programas usarem do mesmo recurso, eu vou ter que ser um pouco mais sincero a respeito disso, programas no topo sempre me aborreceram, eu sou o usuário, eu sei o que eu quero no topo e o que eu não quero, claro que se for uma opção dentro do programa escolhida pelo usuário seria aceitável usar isso, mas se for forçadamente e não uma opção do usuário eu me recusaria a usar o tal programa.

Voltando a parte técnica, basicamente a flag para deixar no topo é Qt.WindowStaysOnTopHint

<objeto>.setWindowFlags(<objeto>.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)

Troque <objeto> pelo contexto (widget ou QMainWindow) que vai aplicar, lembrando que um mesmo programa pode ter várias janelas, um exemplo básico:

from PyQt5 import Qt, QtCore, QtWidgets
import sys

app = QtWidgets.QApplication(sys.argv)

w = QtWidgets.QWidget()
w.setWindowFlags(w.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
w.resize(800, 600)
w.show()
sys.exit(app.exec_())

Note que usei .windowFlags() para obter as flags padrões, para então com o | “combinar” com QtCore.Qt.WindowStaysOnTopHint.

Quase tudo do Qt em C++ em aplicável de forma semelhante no PyQt5 e como alternativa ao PyQt também existe o pyside, que é bastante semelhante, então consultar a documentação oficial da Qt pode lhe ajudar: