Estoy tratando de crear un diálogo no modificable al tamaño con una etiqueta en el mismo. Esta etiqueta tiene una gran cantidad de texto, por lo que quiero que envuelva sin hacer el cuadro de diálogo ridículamente ancho.Etiquetado GTK en un cuadro de diálogo
Por alguna razón, no puedo averiguar qué se necesita para que GTK permita que esto suceda. Ni siquiera puedo encontrar la manera de establecer un ancho máximo en el diálogo, lo cual sería genial.
He aquí un ejemplo de ejecución de lo que quiero decir:
#!/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()
Excavando un poco me di cuenta de cuál es el problema. Cuando crea la ventana/diálogo y esto no se ha mostrado la primera vez que la etiqueta no tendrá una referencia de tamaño padre, Gtk asigna tanto espacio como puede a la etiqueta y luego establece el ancho principal, lo que da como resultado una gran ventana Para evitar este comportamiento, establezca el ancho preferido para el elemento primario y haga un show, de esta manera Gtk calcula la geometría de los elementos primarios y la etiqueta tendrá una referencia real del tamaño del elemento principal. Lo hice de esta manera y ahora todo está funcionando como un encanto. – satanas
hi @satanas: ¿hay alguna posibilidad de que describas un poco más cómo "estableces el ancho preferido para el padre y haces un espectáculo"? Tengo el mismo problema; la opción Gtk.Table está en desuso desde la v3.4, así que estoy buscando una solución no obsoleta. TIA – fossfreedom