在 ubuntu 16.04 下,我收到以下消息
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged
Run Code Online (Sandbox Code Playgroud)
当我用命令打开 zenity 时
zenity --text-info --filename=<filename>
Run Code Online (Sandbox Code Playgroud)
这在 14.04 下不会发生。我认为答案与这篇文章有关,但这篇文章没有解释如何实施建议的解决方案。有人可以解释一下我应该将建议的行添加到哪个文件吗?
您可以通过为 GtkDialog 提供一个模态的父级来修复此警告。相关的函数是 gtk_window_set_transient_for()(它设置这个窗口总是在另一个窗口的顶部或瞬态)和可选的 gtk_window_set_modal() 以使其成为一个模态对话框。这最终是各种 GtkDialog 构造函数所做的。
Byt*_*der 25
忽略它。
这是警告,而不是错误。应用程序可以工作,只是没有按照最佳实践进行编码,就像看起来的那样。您将不得不修改zenity的源代码以实现链接问题中描述的修复程序,然后自己编译它,但是……无论如何它都可以工作,那么为什么要麻烦呢?
如果您只想摆脱终端中的输出,您可以/dev/null通过附加2> /dev/null到命令的末尾,简单地将 STDERR(标准错误流,这是打印警告的位置)重定向到(吞下数据的虚拟字符设备),像这样:
zenity --text-info --filename=<filename> 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
Dav*_*ove 11
似乎 Gtk 开发人员决定添加这个影响许多软件包的警告。我们只需要等待 Zenity 开发人员赶上并修复 Zenity。
使用bash shell(这不符合 Posix 标准),在允许其他消息通过 stderr 的同时抑制特定错误消息相对简单:
zenity --info --text "hello" 2> >(grep -v 'GtkDialog' >&2)
Run Code Online (Sandbox Code Playgroud)
这不会干扰 stdout,因此可以正常使用管道或在命令替换中使用它:
echo message: $(zenity --entry 2> >(grep -v 'GtkDialog' >&2) )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37129 次 |
| 最近记录: |