Abra una nueva ventana con un botón en Python-Tkinter

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *