我正在使用PyGTK创建GUI:
vbox = gtk.VBox(False, 1)
vbox.set_border_width(1)
window.add(vbox)
vbox.show()
vbox.pack_start(menubar, False, True, 0)
vbox.pack_start(a, False, False, 0)
vbox.pack_start(b, False, False, 10)
vbox.pack_end(self.statusbar, False, False, 0)
vbox.pack_end(c, False, False, 10)
a
和b
是固定大小的元素。这会创建一个这样的窗口:
_______________________
|_Window____________|_X_|
|_File_Edit_____________|
| [a] |
| [b] |
| |
| |
| |
| |
|__________[c]__________|
|__Status okay._________|
我需要垂直居中a
和b
,以便a
的下边缘出现在垂直中心,而b
的上边缘出现在垂直中心:
_______________________
|_Window____________|_X_|
|_File_Edit_____________|
| |
| | |
| v |
| [a] |
| |<-- 10 px margin
| [b] |
| ^ |
| | |
| |
|__________[c]__________|
|__Status okay._________|
addStretch(1)
添加到这些项之前和之后的空格来实现此布局,但是我找不到PyGTK的等效命令。有没有办法以这种方式垂直居中窗口中的项目?
答案 0 :(得分:1)
你必须使用第二个VBox打包&amp; b小部件在一起然后打包这个盒子中心,在代码下面运行:
import gtk
window = gtk.Window()
window.set_size_request(120, 180)
vbox = gtk.VBox()
vbox.set_border_width(1)
window.add(vbox)
vbox.show()
a = gtk.Label('a')
b = gtk.Label('b')
c = gtk.Label('c')
vbox2 = gtk.VBox()
vbox2.pack_start(a, True, False, 0)
vbox2.pack_start(b, True, False, 10)
vbox.pack_start(vbox2, True, False, 10)
vbox.pack_end(c, False, False, 10)
window.connect('destroy', gtk.main_quit)
window.show_all()
gtk.main()
Pack_start
和pack_end
方法获取一些参数来设置小部件的位置。
pack_start(widget?, center?, max_stretch?, border?)