Fur*_*ing 2 python qt python-3.x pyqt5
我正在尝试在 pyqt5 中制作一个桌面应用程序,它将保留在所有窗口之上。我一直在网上查找,他们都说解决方案是使用该setWindowFlags(Qt.WindowStaysOnTopHint)方法设置窗口标志,但这对我不起作用。我还有其他方法可以做到这一点吗?
我使用的是 Windows 10 并使用 Python 3.6 + pyqt5 版本 5.9.2。我的代码如下:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
class Main(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowFlags(Qt.WindowStaysOnTopHint)
self.initUI()
self.show()
def initUI(self):
self.alertWidget = AlertWidget()
self.setCentralWidget(self.alertWidget)
class AlertWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
grid = QGridLayout()
self.setLayout(grid)
grid.setAlignment(Qt.AlignTop)
self.alertTextBox = QTextEdit()
grid.addWidget(self.alertTextBox, 0, 0)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = Main()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
假设您的其余代码没有问题,请更改以下代码行:
self.setWindowFlags(Qt.WindowStaysOnTopHint)
Run Code Online (Sandbox Code Playgroud)
到以下代码行:
self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint)
Run Code Online (Sandbox Code Playgroud)
链接到一个答案,解释为什么需要更改上面的代码才能使 Qt.WindowStaysOnTop 标志发挥作用。