【问题标题】:multiline gtk.Label ignores xalign=0.5多行 gtk.Label 忽略 xalign=0.5
【发布时间】: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


【解决方案1】:

这不是一个真正的答案,但它不适合评论。

我猜这是一个错误。当我将您的代码转换为在PyGObject(PyGTK 的继任者)上运行时,它会按您的预期工作。

from gi.repository 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.WindowPosition.CENTER)
      self.set_title("test window")

      label = Gtk.Label("test text")
      label.set_line_wrap(True)
      label.set_justify(Gtk.Justification.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()

当然,如果您卡在 PyGTK 上并且无法立即切换到 PyGObject,那么这个答案并不能解决您的问题。

【讨论】:

  • 有兴趣知道。在这种特殊情况下,它无济于事。该代码是一个相当大的 PyGtk 应用程序的一部分。目前没有将整个东西迁移到 PyGObject 的计划。但只是出于兴趣:PyGObject 中是否有关于新对象的完整文档?
  • 不是我见过的,虽然你可以在很多时候使用普通的 GTK+ 文档。另外,我通过查看 the automatic conversion script 发现 PyGTK 的更改,其中列出了大部分更改。
  • 感谢您的参考。不幸的是,PyGObject 仍然不能真正使用。很多东西都没有记录在案,有些甚至是有缺陷的(参见stackoverflow.com/questions/6133622/…)。
  • 我知道这是旧的,但如果有人(包括我)发现这个线程正在寻找有关 PyGObject 的文档:lazka.github.io/pgi-docs 是去的地方。
猜你喜欢
  • 2011-06-08
  • 2010-12-02
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多