AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 844323
Accepted
Leo Simon
Leo Simon
Asked: 2016-11-02 09:42:16 +0800 CST2016-11-02 09:42:16 +0800 CST 2016-11-02 09:42:16 +0800 CST

在 16.04 下运行 zenity 时出现错误消息:Gtk-Message: GtkDialog 映射没有临时父级。这是不鼓励的

  • 772

在 ubuntu 16.04 下,我收到以下消息

 Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged

当我用命令打开 zenity

  zenity --text-info --filename=<filename>

这在 14.04 下没有发生。我认为答案与这篇文章有关,但这篇文章没有解释如何实施建议的解决方案。有人可以解释一下我应该将建议的行添加到哪个文件吗?

您可以通过为 GtkDialog 提供一个作为模态的父级来修复此警告。相关函数是 gtk_window_set_transient_for() (将这个窗口设置为始终位于另一个窗口的顶部或瞬态)和可选的 gtk_window_set_modal() 以使其成为模式对话框。这最终是各种 GtkDialog 构造函数所做的。

gui
  • 4 4 个回答
  • 38718 Views

4 个回答

  • Voted
  1. Best Answer
    Byte Commander
    2016-11-02T09:49:39+08:002016-11-02T09:49:39+08:00

    忽略它。

    这是一个警告,而不是错误。该应用程序可以正常工作,只是似乎没有考虑最佳实践进行编码。您必须修改zenity的源代码以实现链接问题中描述的修复程序,然后自己编译它,但是......它仍然有效,那么您为什么要打扰?

    如果您只是想摆脱终端中的输出,您可以通过附加到命令的末尾简单地将 STDERR(标准错误流,这是打印警告的地方)重定向到/dev/null(吞下数据的虚拟字符设备) ,2> /dev/null像这样:

    zenity --text-info --filename=<filename> 2> /dev/null
    
    • 25
  2. Dave Rove
    2018-09-15T08:47:28+08:002018-09-15T08:47:28+08:00

    似乎 Gtk 开发人员决定添加这个影响许多软件包的警告。我们只需要等待 Zenity 开发人员赶上并修复 Zenity。

    使用bash shell(这不符合 Posix),在允许其他消息通过 stderr 的同时抑制特定错误消息相对简单:

    zenity --info --text "hello" 2> >(grep -v 'GtkDialog' >&2)
    

    这不会干扰标准输出,因此可以正常使用管道或在命令替换中使用:

    echo message: $(zenity --entry  2> >(grep -v 'GtkDialog' >&2) )
    
    • 11
  3. splaisan
    2018-08-15T00:35:34+08:002018-08-15T00:35:34+08:00

    zenity ... 2>/dev/null为我工作。我看到的唯一问题是其他(重要)错误消息也将被抑制,因此更好地在您的代码中构建错误捕获

    • 3
  4. EmpireJones
    2019-11-28T14:56:59+08:002019-11-28T14:56:59+08:00

    基于 Dave Rove 的回答,如果你有很多提示,你可以通过创建一个函数来清理它,比如

    function zenityNoWarn() {
        zenity "$@" 2> >(grep -v 'GtkDialog' >&2)
    }
    

    然后像这样使用它:

    zenityNoWarn --question --text "Are you sure?"
    

    当与其他逻辑结合时,这使得事情更容易阅读:

    if [[ `zenityNoWarn --question --text "Are you sure?"; echo $?` -eq 0 ]]; then
        echo "Yes!"
    else
        echo "No..."
    fi
    
    • 3

相关问题

  • 如何在 Ubuntu Desktop 中使用 GUI 工具安装 RPM?

  • 如何在不更改名称的情况下隐藏目录或文件?

  • 有没有办法从 GUI/桌面管理我的 Grub 菜单选项?

  • iptables 的图形用户界面?

  • 从共享 NFS /home 到完整的 LDAP 解决方案

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve