首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PyQt4如何让QWidget始终在最上面?

PyQt4如何让QWidget始终在最上面?
EN

Stack Overflow用户
提问于 2018-06-17 06:27:58
回答 1查看 2.6K关注 0票数 2

我在Windows7上使用PyQt4和Python2.7

我有一个QWidget,我希望在单击main时保持在QMainWindow上方。这个想法是,main将包含一系列“编辑”按钮,这些按钮将打开编辑小部件,而编辑小部件则用main上包含的信息进行刷新。只要小部件停留在主窗口的前面,我就不会特别关心它们中的任何一个是否“总是在前面”。

有几个问题可以解决这个问题,但我没有看到适用于我的特定用例的答案。一个处理小部件,但仅为应用程序主窗口提供答案(小部件位于其他环境窗口之上,但在单击主窗口时落后于应用程序主窗口),另一个处理Qt,但不是pythonic示例:

PyQt: Always on top

How keep a QWidget always on top?

以下是我到目前为止拥有的代码:

代码语言:javascript
复制
from PyQt4 import QtCore, QtGui

class Ui_MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowTitle("MainWindow")
        self.resize(400, 300)

class Ui_Widget(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowTitle("Widget")
        self.resize(400, 300)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = Ui_MainWindow()
    MainWindow.show()
    Widget = Ui_Widget()
    Widget.show()
    sys.exit(app.exec_())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-17 07:08:14

如果您希望Ui_Widget始终位于Ui_MainWindow之上,则Ui_Widget必须是Ui_MainWindow的子级,并且必须激活标志Qt::Dialog,如下所示:

代码语言:javascript
复制
from PyQt4 import QtCore, QtGui

class Ui_MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle("MainWindow")
        self.resize(400, 300)

class Ui_Widget(QtGui.QWidget):
    def __init__(self,  parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.setWindowFlags(self.windowFlags() | QtCore.Qt.Dialog)
        self.setWindowTitle("Widget")
        self.resize(400, 300)
        self.move(200, 150)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = Ui_MainWindow()
    MainWindow.show()
    Widget = Ui_Widget(MainWindow)
    Widget.show()
    sys.exit(app.exec_())
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50892264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档