Chatear en RedIrc

miércoles, 23 de marzo de 2016

tkinter, crear un StatusBar con python

Los que programamos interfaces con Tkinter en python sabemos que la librería de widget's no es muy amplia comparándola con otros GUI's como GTK o QT, muchos no están presentes, como pueden ser ToolBar's o StatusBar's.

Podemos crear uno fácilmente haciendo uso de otros widgets ya existentes como un simple Label en este caso. Para crear un StatusBar podemos hacer esto:
from Tkinter import *

Window = Tk()
Window.title("StatusBar minimalista")
Window.geometry("400x240+200+200")

"""
Codigo de cabezera
"""

StatusBar = Label(Window, text="Status: OK", bd=1, relief=SUNKEN, anchor=W)
StatusBar.pack(side=BOTTOM, fill=X)

Window.mainloop()

Como vemos en el código anterior, creamos una etiqueta (Label), definimos un borde a 1 (db=1), un estilo de borde hundido (relief=SUNKEN) y ajustamos el texto a la izquierda (anchor=W), finalmente, lo colocamos abajo (side=BOTTOM) y permitimos que se expanda en horizontal (fill=X).

tkinter, ventana statusbar

Un Status Bar mejor sería haciendo uso de un Frame y extenderla mediante clases, un ejemplo practico seria este:
class StatusBar(Frame):
    """
    Clase minimalista para simular un StatusBar
    """
    def __init__(self, master):
        Frame.__init__(self, master=None, cnf=None)
        self.lbl = Label(self, bd=1, relief=SUNKEN, anchor=W)
        self.lbl.pack(fill=X)
        self.pack(side=BOTTOM, fill=X)

    def text(self, string):
        """
        Añade texto al Label
        """
        self.lbl.config(text=string)
        self.lbl.update_idletasks()     

    def getText(self):
        """
        Retorna el texto actual del Label
        """
        return self.lbl.cget("text")

Para usar la clase es tan fácil como instanciarla:
status = StatusBar(Window)
Para definir un titulo a nuestro StatusBar:
status.text("Status: OK")
Si quisieramos añadir texto o cambiarlo podemos usar el metodo getText() que creamos antes:
status.text(status.getText() + ", esperando conexiones ...")

Con esto logramos simular un StatusBar normalito, claro, si queremos algo mejor tendremos que hacer uso de Canvas, fuentes personalizadas, imágenes etc.

No hay comentarios:

Publicar un comentario