【发布时间】:2012-04-07 16:40:57
【问题描述】:
打开换行时,gtk.Label 无法居中对齐。示例代码:
import pygtk
pygtk.require('2.0')
import gtk
class testwin(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
width,height = 300,300
self.set_size_request(width,height)
self.set_position(gtk.WIN_POS_CENTER)
self.set_title("test window")
label = gtk.Label("test text")
label.set_line_wrap(True)
label.set_justify(gtk.JUSTIFY_CENTER)
label.set_alignment(0.5,0.5)
label.connect("size-allocate",lambda l,s: l.set_size_request(s.width-1, -1))
self.add(label)
self.connect("destroy", gtk.main_quit)
self.show_all()
testwin()
gtk.main()
看起来像这样,也就是说,它左对齐:http://m45.img-up.net/?up=pic122x97.png
如果你注释掉第 14 行 (set_line_wrap) 一切都很好:http://o54.img-up.net/?up=pic2y00p9.png
请注意,yalign 可以正常工作。因此,当换行打开时,gtk.Misc.set_alignment-function 中的第一个参数似乎没有效果。
使用 Fedora 16、64 位、gtk 3.2.4、pygtk 2.24.0、python 2.7.2
问题:这是故意的还是错误的?它应该如何制作或有可用的解决方法?
【问题讨论】:
-
顺便说一下,这种行为在某种程度上与 set_size_request 相关。但我需要这条线,因为在我的用例中,包装应该适应窗口大小调整。
-
我在 GTK+ 2.24 (C) 上也会遇到这种情况。
标签: label alignment pygtk word-wrap