7

我正在尝试创建一个带有标签的不可调整大小的对话框。这个标签有很多文字,所以我希望它在不使对话框变得荒谬的情况下换行

出于某种原因,我不知道如何让 GTK 允许这种情况发生。我什至找不到在对话框上设置最大宽度的方法,这很好。

这是我的意思的一个运行示例:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from gi.repository import Gtk

class DialogExample(Gtk.Dialog):

    def __init__(self, parent):
        Gtk.Dialog.__init__(self, "My Dialog", parent, 0,
            (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
             Gtk.STOCK_OK, Gtk.ResponseType.OK))

        self.set_default_size(150, 100)
        self.set_resizable(False)

        label = Gtk.Label("This is a dialog to display additional information, with a bunch of text in it just to make sure it will wrap enough for demonstration purposes")
        label.set_line_wrap(True)

        box = self.get_content_area()
        box.add(label)
        self.show_all()

class DialogWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Dialog Example")

        self.set_default_size(250, 200)


        button = Gtk.Button("Open dialog")
        button.connect("clicked", self.on_button_clicked)

        self.add(button)

    def on_button_clicked(self, widget):
        dialog = DialogExample(self)
        response = dialog.run()

        if response == Gtk.ResponseType.OK:
            print "The OK button was clicked"
        elif response == Gtk.ResponseType.CANCEL:
            print "The Cancel button was clicked"

        dialog.destroy()

win = DialogWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
4

2 回答 2

10

我解决了这个问题(除了将换行设置为 True)将 Gtk.Label 放入 Gtk.Table 中,使用 FILL 和 SHRINK 标志并为标签设置固定宽度。像这样的东西:

label = Gtk.Label("This is a dialog to display additional information, with a bunch of text in it just to make sure it will wrap enough for demonstration purposes")
label.set_line_wrap(True)
label.set_size_request(250, -1) # 250 or whatever width you want. -1 to keep height automatic

table = Gtk.Table(1, 1, False)
table.attach(label, 0, 1, 0, 1, Gtk.AttachOptions.SHRINK | Gtk.AttachOptions.FILL)

这应该够了吧

于 2012-12-25T20:33:01.710 回答
1

从 2.6 开始,您可以使用: label.set_max_width_chars(50)

目前不折旧。:)

见这里:https ://developer.gnome.org/Labels/

于 2017-10-18T00:09:17.330 回答