PyQt:始终位于顶部

问题描述 投票:0回答:3

这是在 PyQt4、Linux 和 Python 2.5 上

我可以让 PyQt 将我的窗口设置为“始终位于顶部”而不是其他应用程序吗?

例如,在 GTK 中我使用属性:Modal。

现在,在 PyQt 中我使用 QWidget,但是,我找不到方法来做到这一点。

有什么想法吗??

python pyqt
3个回答
42
投票

向 QMainWindow 传递

WindowStaysOnTopHint
窗口标志(或使用 setWindowFlags)。

如名称所示,这是对窗口管理器的提示(不是硬性保证)。

最简单的示例:

import sys
from PyQt4 import QtGui, QtCore

class mymainwindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint)

app = QtGui.QApplication(sys.argv)
mywindow = mymainwindow()
mywindow.show()
app.exec_()

26
投票
setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)

setwindowaFlags
是一种可以从
form
对象调用它的方法,并且只需要一个参数是一个常量
QtCore.Qt.WindowStaysOnTopHint
,它指的是使您的表单保持在顶部


1
投票

适用于无框窗口(无标题)和始终位于顶部。
使用:

setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.FramelessWindowHint)

注意:如果您尝试设置为单独的窗口标志,则无框窗口将不起作用。
例如:下面的代码不会导致无框和始终位于顶部的窗口

self.setWindowFlags(Qt.FramelessWindowHint)
self.setWindowFlags(Qt.WindowStaysOnTopHint)
© www.soinside.com 2019 - 2024. All rights reserved.