我試圖用PyGTK創建多行按鈕。我在gtk.Button的子類中添加了一個標籤,但我無法根據標籤大小選擇按鈕。如果標籤使其具有自己的尺寸,則即使使用label.set_line_wrap(True)
也沒有文字環繞,因爲標籤只是調整超出按鈕的範圍。我會將標籤的大小設置爲按鈕的大小,但除非我使用set_size_request
明確設置按鈕的大小,否則我無法確定按鈕的大小(它被打包在表格中)。如何創建多行按鈕
有什麼建議嗎?
我試圖用PyGTK創建多行按鈕。我在gtk.Button的子類中添加了一個標籤,但我無法根據標籤大小選擇按鈕。如果標籤使其具有自己的尺寸,則即使使用label.set_line_wrap(True)
也沒有文字環繞,因爲標籤只是調整超出按鈕的範圍。我會將標籤的大小設置爲按鈕的大小,但除非我使用set_size_request
明確設置按鈕的大小,否則我無法確定按鈕的大小(它被打包在表格中)。如何創建多行按鈕
有什麼建議嗎?
一般來說,GTK +不可能這樣做,因爲沒有階段小部件「協商」大小。相反,小部件會報告所需的大小,並在該容器分配一些區域後(通常等於或大於所需的大小)。在GTK + 3中,將會有高寬度協商,所以如果你的按鈕(而不是它的標籤)無論如何將被分配多行,它將能夠請求更少的寬度幷包裝其文本。
在2.x中,你能做的最好的可能是使用的gtk.Label
width_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()
我發現,在Python 3.4 GTK + 3,所有你需要做的就是添加你想要的一個\n
打破。它不會自動保存,但您可以爲按鈕對象設置多行標籤。例如,
self.button = Gtk.Button(label="A lotta text \n and a lotta more.")
這不僅工作,但它比我放在一起更清潔的代碼。 – exupero 2010-05-13 22:45:38