Notas sobre tkinter

Post image

tkinter

Enlace a la documentación de tkinter.

Ventana básica con tkinter

Mostrar código fuente
from tkinter import *

class Window():

    def __init__(self):
        self.root = Tk()
        self.root.title("Aplicación de ventanas con tkinter")
        self.root.geometry('400x100')
        self.label = Label(self.root,  text="Pantalla generada con tkinter",  )
        self.label.pack()


        self.button_exit = Button(self.root, text = "Exit", command = exit)
        self.button_exit.pack()

        self.root.mainloop()


if __name__ == '__main__':
  app = Window()

Este es el resultado:

Ventana básica con tkinter

Explorador de ficheros con tkinter

Para crear un explorador de ficheros, hemos de importar el módulo filedialog de Tkinter. Este módulo le permite abrir una ventana de diálogo para buscar ficheros o directorios dentre de su sistema de archivos.

A continuación se muestra cómo implementar un botón que abre un cuadro de diálogo para seleccionar un directorio:

Mostrar código fuente
from tkinter import *
from tkinter import filedialog

class Window():

    def browseDir(self):
        #  directorio guarda la ruta de la carpeta seleccionada:
         directorio= filedialog.askdirectory()
        #  Traslada la ruta a la etiqueta:
         self.labelDirOrigen.configure( text= directorio)

    def __init__(self):
        # Configuración de la ventana
        self.root = Tk()
        self.root.title("Filedialog with tkinter in Python")
        self.root.geometry('1000x300')

        # Etiquetas
        self.label = Label(self.root,  text="FILEDIALOG CON TKINTER",  )
        self.label.pack()

        self.labelDirOrigen = Label(self.root,  text="Carpeta origen:")
        self.labelDirOrigen.pack()

        # Botón que abre la ventana de Diálogo:
        self.buttonFD = Button(self.root, text="Abrir carpeta...", command=self.browseDir)
        self.buttonFD.pack()

        self.button_exit = Button(self.root, text = "Exit", command = exit)
        self.button_exit.pack()

        self.root.mainloop()

if __name__ == '__main__':
  app = Window()

Posicionar elementos con tkinter

Posicionar los controles dentro de una ventana con tkinter se puede hacer de tres formas distintas: pack(), place() y grid(). No utilices varios métodos en la misma aplicación.

place() - Posicionamiento absoluto

place() posiciona los elementos de forma absoluta.

Código
from tkinter import *

class Window():


    def __init__(self):
        # Configuración de la ventana
        self.root = Tk()
        self.root.title("Posicionamiento con place()")
        self.root.geometry('400x300')

        # Etiquetas
        self.label = Label(self.root,  text="Cómo se posiciona con place()",  )
        self.label.place(x=20, y=20)

        self.button_exit = Button(self.root, text = "Exit", command = exit)
        self.button_exit.place(x=20, y=50, height=20, width=100)

        self.root.mainloop()

if __name__ == '__main__':
  app = Window()

x, y, width y height se pueden expresar en términos relativos respecto a la ventana padre. Si la ventana se redimensiona, los valores cambian. Esto se hace con las propiedades relwidth, relheight, relx y rely. Aceptan valores entre 0 y 1.

Código

# La etiqueta tiene un ancho y alto de la mitad del ancho y alto de la ventana:
self.label.place(relwidth=0.5, relheight=0.5)

# Si la ventana tiene un tamaño de 300x200 el botón, al inicio, se encontrará en la posición (30,20). A medida que la ventana cambie, se actualiza la posición del botón.
self.button.place(relx=0.1, rely=0.1, relwidth=0.5, relheight=0.5)

pack() - Posicionamiento relativo

También te puede interesar: