我是一名学生,他做了一些网络资源和一些命令行应用程序,现在尝试使用GUI。我读了http://python-gtk-3-tutorial.readthedocs.org/en/latest/layout.html,我偶然发现了这句话:
由于GTK +现在支持客户端装饰,因此可以使用Gtk.HeaderBar代替标题栏(由窗口管理器呈现)。
有人可以解释一下"客户端装饰"是
从阅读http://blogs.gnome.org/mclasen/2014/01/13/client-side-decorations-continued/我会猜到"客户端装饰"就像主题一样。有人可以解释一下窗口管理器如何与GTK +交互?为什么称它为' 客户端侧面装饰'?什么是服务器端装饰? (或其他类型的装饰?)
答案 0 :(得分:38)
传统上,GUI应用程序将负责其窗口的内容,但不是标题栏,关闭按钮,边框,调整大小夹点等。这些都将由窗口管理器添加,并被称为装饰品
(窗口管理器的例子是TWM,Fluxbox,Metacity,Mutter等)
这是一个简化的解释,但这是桌面主题的实现方式;由于窗口不知道其标题栏,窗口管理器会在其上放置一个与当前主题相匹配的窗口。如果用户更改主题,则窗口只会更改标题栏。您的申请无需照顾。
另一方面,这意味着您的应用程序完全无法以任何方式自定义标题栏。
近年来,有可能告诉窗口管理员“不,谢谢,我不想要装饰”,而是渲染自己的标题栏。这就是GtkHeaderBar
的用途 - 通过在标题栏中添加自定义控件来节省更多屏幕空间,例如Chromium使用其浏览器标签。这称为客户端装饰。
(从技术上讲,这总是可行的,但很容易出错,因为你必须自己模仿窗户装饰的所有功能,就像用户期望它们的工作方式一样。GtkHeaderBar
为你做到这一点。)< / p>
这是一把双刃剑,因为在客户端装饰时,您的应用程序不会对窗口管理器主题的更改作出反应。
至于名称客户端,它来自X术语,其中客户端是一个呈现窗口并将其发送到X 的应用程序服务器