当前位置:  开发笔记 > 编程语言 > 正文

有人可以解释Gtk2包装吗?

如何解决《有人可以解释Gtk2包装吗?》经验,为你挑选了1个好方法。

我需要将Gtk2用于项目.我将使用python/ruby​​.问题是包装对我来说似乎有些神秘.我尝试使用VBox,以便在窗口中可以使用以下小部件(按以下顺序):

菜单栏

工具栏

文本视图/编辑器控件

我已经设法"猜测"我的方式pack_start并获得我需要的布局,但我希望能够理解它.Ruby Gtk2上的文档看起来太不直观了(python也是如此,因为它是相同的,只是为python编写的),你能解开一些亮点吗?

此外,set_size_request添加组件时并不总是有效pack_start.这是为什么 ?



1> Ali Afshar..:

盒子包装非常简单,所以也许你不理解它是因为你想象它比它更复杂.

布局是垂直(如一堆砖)或水平(如人的队列).该布局中的每个元素都可以展开或无法展开.

水平(HBox)

[widget][widget][widget][widget]

垂直(VBox)

[widget]
[widget]
[widget]
[widget]

例如,一个带有两个按钮的水平布局(HBox),代码如下:

import gtk
box = gtk.HBox()
b1 = gtk.Button('button1')
b2 = gtk.Button('button2')
box.pack_start(b1)
box.pack_start(b2)

现在,由于包装的默认设置是expand=True,所以添加到框中的那些按钮都将扩展,并且每个按钮将占据一半的面积.无论容器的大小是多少.我认为这是"有弹性的".

扩展小部件:

[[    widget    ][    widget    ]]

因此,如果您希望其中一个按钮不展开,您将按如下方式打包:

box.pack_start(b1, expand=False)

非扩展小部件:

[[widget][        widget        ]]

然后按钮将只占据绘制自己所需的空间:文本+边框+阴影+图像(如果有的话)等.另一个按钮将展开以填充剩余区域.通常,按钮不需要展开,因此更真实的情况是TextArea,您希望扩展它以填充窗口.

可以传递给的另一个参数pack_start是fill参数,通常可以忽略它.这足以说明如果expand=False那么fill参数完全被忽略(因为在那种情况下它没有意义).

你提到的另一件事是set_size_request.我一般会说这不是一个好主意.我一般说,因为有些情况下你需要使用它.但是对于刚开始打包GTK +用户界面的人,我强烈建议不要使用它.通常,让盒子和其他容器为您处理您的布局.这set_size_request并不完全符合您的预期.它不会改变窗口小部件的大小,而只会改变请求的空间大小.它可能会使用更多,甚至可能会拉伸以填充更大的空间.它很少会变得比请求小,但又是因为它只是一个"请求",所以无法保证请求将得到满足.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有