Python proporciona una variedad de GUI (interfaz gráfica de usuario) como PyQt, Tkinter, Kivy y pronto. Entre ellos, tkinter es el módulo GUI más utilizado en Python, ya que también es simple y fácil de aprender e implementar. La palabra Tkinter proviene de la interfaz tk. El módulo tkinter está disponible en la biblioteca estándar de Python.
Nota: Para obtener más información, consulte Python GUI – tkinter
Instalación
Para Ubuntu , debe instalar el módulo tkinter escribiendo el siguiente comando:
sudo apt-get install python-tk
Cuando se ejecuta un programa Tkinter, ejecuta un bucle principal (un bucle infinito) que es responsable de ejecutar un programa GUI. A la vez, solo una instancia de mainloop puede estar activa, por lo que para abrir una nueva ventana tenemos que usar un widget, Toplevel .
Un widget de nivel superior funciona de manera muy similar a un marco , pero se abre en una ventana de nivel superior separada, tales ventanas tienen todas las propiedades que debería tener una ventana principal (ventana raíz/maestra).
Para abrir una nueva ventana con un botón, usaremos events .
Ejemplo 1:
Python3
# This will import all the widgets # and modules which are available in # tkinter and ttk module from tkinter import * from tkinter.ttk import * # creates a Tk() object master = Tk() # sets the geometry of main # root window master.geometry("200x200") # function to open a new window # on a button click def openNewWindow(): # Toplevel object which will # be treated as a new window newWindow = Toplevel(master) # sets the title of the # Toplevel widget newWindow.title("New Window") # sets the geometry of toplevel newWindow.geometry("200x200") # A Label widget to show in toplevel Label(newWindow, text ="This is a new window").pack() label = Label(master, text ="This is the main window") label.pack(pady = 10) # a button widget which will open a # new window on button click btn = Button(master, text ="Click to open a new window", command = openNewWindow) btn.pack(pady = 10) # mainloop, runs infinitely mainloop()
Producción:
Ejemplo 2: Este será un enfoque basado en clases, en este crearemos una clase que derivará de la clase de widget de nivel superior y se comportará como un nivel superior. Este método será útil cuando desee agregar algunas otras propiedades a una clase de widget de nivel superior existente.
Cada objeto de esta clase será un widget de nivel superior. También usaremos el método bind() para registrar el evento de clic .
Python3
# This will import all the widgets # and modules which are available in # tkinter and ttk module from tkinter import * from tkinter.ttk import * class NewWindow(Toplevel): def __init__(self, master = None): super().__init__(master = master) self.title("New Window") self.geometry("200x200") label = Label(self, text ="This is a new Window") label.pack() # creates a Tk() object master = Tk() # sets the geometry of # main root window master.geometry("200x200") label = Label(master, text ="This is the main window") label.pack(side = TOP, pady = 10) # a button widget which will # open a new window on button click btn = Button(master, text ="Click to open a new window") # Following line will bind click event # On any click left / right button # of mouse a new window will be opened btn.bind("<Button>", lambda e: NewWindow(master)) btn.pack(pady = 10) # mainloop, runs infinitely mainloop()
Producción:
Publicación traducida automáticamente
Artículo escrito por sanjeev2552 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA