【问题标题】:How to Create a Multiline Button如何创建多行按钮
【发布时间】:2010-05-13 00:19:25
【问题描述】:

我正在尝试使用 PyGTK 创建一个多行按钮。我在我的 gtk.Button 子类中添加了一个标签,但是我在调​​整按钮的标签大小时遇到​​了问题。如果标签具有自己的大小,则即使使用label.set_line_wrap(True) 也不会自动换行,因为标签只是调整大小超出了按钮的范围。我会将标签的大小设置为按钮的大小,但除非我使用set_size_request 明确设置按钮的大小,否则我无法找出按钮的大小(它被打包在一个表中) .

有什么建议吗?

【问题讨论】:

    标签: python button label pygtk


    【解决方案1】:

    一般来说,这在 GTK+ 中是不可能的,因为没有小部件“协商”大小的阶段。相反,小部件报告它们所需的大小,然后容器分配一些区域(通常等于或大于所需的)。在 GTK+ 3 中会有宽度换高度的协商,所以如果你的按钮(而不是它的标签)无论如何都要被分配几行,它将能够请求更少的宽度并换行它的文本。

    在 2.x 中你能做的最好的可能是使用gtk.Labelwidth_chars 属性:

    import gtk
    
    window = gtk.Window ()
    align  = gtk.Alignment (0.5, 0.5)
    button = gtk.Button ('a very long, possibly multiline text')
    
    label = button.child
    label.props.wrap = True
    label.props.width_chars = 20
    
    window.set_default_size (500, 500)
    window.connect ('destroy', lambda *ignored: gtk.main_quit ())
    
    window.add (align)
    align.add (button)
    window.show_all ()
    
    gtk.main ()
    

    【讨论】:

    • 这不仅有效,而且比我整理的代码更简洁。
    【解决方案2】:

    我发现在 Python 3.4 GTK+3 中,你需要做的就是在你想要中断的地方添加一个\n。它不会自动换行,但您可以为按钮对象设置多行标签。例如,

    self.button = Gtk.Button(label="A lotta text \n and a lotta more.")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多