在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构造函数所做的事情。
谢谢@ Al.G。我能够通过
—
西蒙
WINDOW_ID=$(xprop -name
echo $ TITLE` 行恢复WINDOW ID 。grep WM_CLIENT_LEADER | 切-d“#” -f2 | 剪切-c2-20)`,然后我尝试了, zenity --attach=$WINDOW_ID --text-info --filename=<filename>
但可悲的是我仍然收到警告。太糟糕了,但是一天之内知道如何获取窗口ID可能会派上用场!
对。如果您搜索gtk_window_set_modal,则会得到很多结果,但是我不知道如何以使消息静音的方式进行设置。
—
Leo Simon
根据文档,您给它一个窗口和一个父窗口。我想应该在将父窗口设置为的窗口创建后的某个地方调用它
—
Al.G.
NULL
。但是我无法make install
在本地进行禅意(找不到文档或有关如何配置安装的内容),所以我最终放弃了。一定要用脏的2>/dev/null
。
zenity --help-general
提供--attach=WINDOW Set the parent window to attach to
但我不确定如何使用它(什么是Window?),也许它将解决您的问题。