【问题标题】:PyQt5 Focus QMainWindow as first windowPyQt5 Focus QMainWindow 作为第一个窗口
【发布时间】:2017-05-15 21:40:23
【问题描述】:

我正在 pyqt 中构建一个应用程序,该应用程序由另一个应用程序调用,该应用程序具有另一个未在 pyqt 中构建的图形界面。我有一个QMainWindow,问题是当启动时出现在其他应用程序的后面,我不知道如何让它出现在焦点上。 我尝试在构造函数中传递窗口类型

Qt_WindowType

但不起作用

这是我的课

class Foo(QMainWindow):
    def __init__(self, logger):
        super(Foo, self).__init__()
        # more code...
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = ScanGui(logger)
    sys.exit(app.exec_())

谢谢。

【问题讨论】:

    标签: python python-3.x pyqt pyqt5


    【解决方案1】:

    根据您要查找的内容,我会说看看这个标志:

    self.setWindowFlags(Qt.WindowStaysOnTopHint)
    

    您也可以使用模态模式。

    SetWindowModality 而不是 WindowStayOnTopHint,modal modes(Qt.WindowModal 和 Qt.ApplicationModal)都允许其他应用程序位于您的模态窗口之上。

    【讨论】:

    • 谢谢。有用!我可以使用 self.setWindowModality(QtCore.Qt.WindowModal) 或 self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) 将父窗口传递给我想要稍后出现的所有子窗口。谢谢!
    • 耶!干杯。如果您需要更好地了解哪一个更适合您的问题,只需检查我链接的链接。 ")
    • 如果您希望您的模态在全屏窗口中可见,这不起作用。
    • 是的@Fusion,您可能必须通过 QProcess.pid() 处理它的“pid”并调用底层操作系统 API 来完成它。一个更简单的方法是使用“.close()”和“.open()”或“.show()”来让它出现在前面。这就是我通常做的,哈哈。
    猜你喜欢
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多