【问题标题】:show pop up on main window?在主窗口显示弹出窗口?
【发布时间】:2019-07-18 16:26:38
【问题描述】:

目前,我正在 Chrome 上构建一个网络自动化应用程序来帮助我自动化一些任务。并且在运行过程中,如果程序遇到错误或完成工作,会显示错误信息或通知。为此,我正在使用 QmessageBox。但是这里出现了一个问题,当我正在运行应用程序并切换到做一些其他工作时(例如:看电影,...),弹出窗口没有显示在主窗口上并且似乎被隐藏了。我必须最小化主窗口才能看到它。所以我想找到一个解决方案,比如 QmessageBox 的选项或在主窗口上弹出的东西。感谢您的帮助。

这是我的代码

def message(title, info, icon_path='ac_solution.ico'):
    message_box = QtGui.QMessageBox()
    message_box.setText(info)
    message_box.setWindowTitle(title)
    message_box.setWindowIcon(QtGui.QIcon(icon_path))
    message_box.setIconPixmap(QtGui.QPixmap(icon_path))
    message_box.exec_()

【问题讨论】:

    标签: python pyqt4 qmessagebox


    【解决方案1】:

    您可能正在寻找的是窗口“模态”,这意味着一个窗口对其父级是“模态”的,拥有鼠标/键盘交互的所有权,在对话框关闭之前不会传递给其父级。

    不清楚你的message是静态函数还是你的应用或主窗口的方法,但如果你需要这种行为,你需要父母。

    message_box = QtGui.QMessageBox(parent)
    

    这样,您将拥有一个始终位于父窗口(例如您的主窗口)前面的模态消息框。

    【讨论】:

    • 感谢您的回答,消息是我的应用程序的一种方法。当我运行应用程序时,它会占用 Chrome 的一个标签,然后我会创建一个新标签来观看电影。我希望弹出窗口显示在新标签上(我正在看电影)
    • 我不明白你是如何开发你的应用程序的,因为我没有 chrome 应用程序的经验,但我担心你无法制作 QDialog(QMesssageBox 窗口是 QDialog后代)“选项卡”的子级,作为 Qt 对话框的模态父级必须是顶级窗口。因此,如果您可以访问主浏览器窗口in Qt 框架(如在 QWidget 子类中),您只需将 QMessageBox 父级设置为它,否则我真诚地怀疑是否有任何其他解决方案。
    猜你喜欢
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多