Sea el caso que tenemos un elemento como un textView con barras de desplazamiento que lo ocultamos y lo mostramos según conveniencia y que nuestra ventana principal tiene valores default (150*50, suponiendo que trabajemos con glade). Lo que sucedera sera lo siguiente:
1. Ventana lanzada con el textView oculto entre el button y el progressbar:
2. Al hacer clic en el button, mostramos el textView oculto:
El problema es que la ventana principal no retoma el tamaño inicial (el default que le dimos), "no lo recuerda".
Para solucionar ello podemos usar dos propiedades resize() y get_default_size(). resize() será para indicarle el tamaño que debe tomar pasandole como parametro un width y un height. get_default_size() devuelve una tupla con width y height especificados como valores default (suponiendo que lo declaraste en glade). Entonces la solución es simple, bastará con combinar ambas propiedades para solucionar el problema de redimensionado.
Para verlo mejor, les dejo código de ejemplo para PyGTK (de aqui pueden adaptarlo a las nuevas tecnologías de PyGI)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gtk
class Test(object):
def __init__(self):
# Se carga el archivo glade con la ventana
builder = gtk.Builder()
builder.add_from_file('test.glade')
# Se recuperan los widget a usar (no son necesarios todos)
self.winMain = builder.get_object('winMain')
self.textview = builder.get_object('textview1')
self.scrolledwindow1 = builder.get_object('scrolledwindow1')
# Se asocian las señales del archivo glade a metodos de la clase
self.winMain.connect("destroy", lambda x: gtk.main_quit())
builder.connect_signals(self)
# Mostramos la ventana principal
self.winMain.show()
texto="algo 01\nalgo 02\nalgo 03\nalgo 04\nalgo 05\nalgo 06\n"
self.textview.get_buffer().set_text(texto)
self.scrolledwindow1.set_visible(False)
def on_button1_clicked(self, widget):
if self.scrolledwindow1.get_visible():
self.scrolledwindow1.set_visible(False)
self.winMain.resize(self.winMain.get_default_size()[0], self.winMain.get_default_size()[1])
else:
self.scrolledwindow1.set_visible(True)
# Esto solo se ejecuta cuando es llamado como programa principal
if __name__ == '__main__':
Test()
gtk.main()
# -*- coding: utf-8 -*-
import gtk
class Test(object):
def __init__(self):
# Se carga el archivo glade con la ventana
builder = gtk.Builder()
builder.add_from_file('test.glade')
# Se recuperan los widget a usar (no son necesarios todos)
self.winMain = builder.get_object('winMain')
self.textview = builder.get_object('textview1')
self.scrolledwindow1 = builder.get_object('scrolledwindow1')
# Se asocian las señales del archivo glade a metodos de la clase
self.winMain.connect("destroy", lambda x: gtk.main_quit())
builder.connect_signals(self)
# Mostramos la ventana principal
self.winMain.show()
texto="algo 01\nalgo 02\nalgo 03\nalgo 04\nalgo 05\nalgo 06\n"
self.textview.get_buffer().set_text(texto)
self.scrolledwindow1.set_visible(False)
def on_button1_clicked(self, widget):
if self.scrolledwindow1.get_visible():
self.scrolledwindow1.set_visible(False)
self.winMain.resize(self.winMain.get_default_size()[0], self.winMain.get_default_size()[1])
else:
self.scrolledwindow1.set_visible(True)
# Esto solo se ejecuta cuando es llamado como programa principal
if __name__ == '__main__':
Test()
gtk.main()
Nota: Lo que ocultamos es el elemento superior al textView, en este caso será la barra de desplazamiento.
No hay comentarios:
Publicar un comentario