es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La apariencia de la GUI de TKInter que contiene un Notebook cambia cuando cambio el nombre de clase pero no los parámetros.

Estoy intentando crear una aplicación con pestañas de Notebook, pero cada pestaña debe describirse por separado como clase. Para comenzar, he dado 2 nombres de clase para 2 pestañas como Frame1 y Frame2, pero quiero dar nombres sensatos.

Aquí está el código que funciona:

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry('400x400')
root.title('Title')

notebook = ttk.Notebook(root)

class Frame1(Frame):
    def __init__(self, container):
        super().__init__(container)
        self.Frame1 = Frame(container)
        self.Frame1.config(bg='blue')
        self.Frame1.place(x=0, y=24, relwidth=0.9, relheight=0.9)

class Frame2(Frame):
    def __init__(self, container):
        super().__init__(container)
        self.Frame2 = Frame(container)
        self.Frame2.config(height=200, width=203, bg= 'green')
        self.Frame2.place(x=0, y=24)

Frame1 = Frame1(notebook)
notebook.add(Frame1, text = "Connection")

Frame2 = Frame2(notebook)
notebook.add(Frame2, text = "Transient Response")

notebook.place(x=10, y=10)

root.mainloop()

El resultado se muestra en la captura de pantalla: 2 pestañas con relleno azul y verde.

Quiero dar nombres sensatos. Tan pronto como cambio el nombre de la clase, por ejemplo, Frame2 por Frame3, la imagen se estropea (ver captura de pantalla).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para dar nombres significativos a las pestañas del cuaderno, es necesario actualizar los nombres de las clases, así como los nombres de las instancias de esas clases. Actualizar solo los nombres de las instancias no funcionará ya que están vinculados a los nombres de las clases.

    Aquí está un código actualizado con nombres de clase significativos:

    from tkinter import *
    from tkinter import ttk
    
    root = Tk()
    root.geometry('400x400')
    root.title('Título')
    
    notebook = ttk.Notebook(root)
    
    class ConnectionFrame(Frame):
        def __init__(self, container):
            super().__init__(container)
            self.Frame1 = Frame(container)
            self.Frame1.config(bg='blue')
            self.Frame1.place(x=0, y=24, relwidth=0.9, relheight=0.9)
    
    
    class ResponseFrame(Frame):
        def __init__(self, container):
            super().__init__(container)
            self.Frame2 = Frame(container)
            self.Frame2.config(height=200, width=203, bg= 'green')
            self.Frame2.place(x=0, y=24)
    
    ConnectionFrame = ConnectionFrame(notebook)
    notebook.add(ConnectionFrame, text = "Conexión")
    
    ResponseFrame = ResponseFrame(notebook)
    notebook.add(ResponseFrame, text = "Respuesta")
    
    notebook.place(x=10, y=10)
    
    root.mainloop()
    

    Tenga en cuenta que los nombres de las clases son ahora ConnectionFrame y ResponseFrame, y los nombres de instancia correspondientes también se han actualizado para que coincidan con los nuevos nombres de clase. Con estos cambios, ahora puede actualizar los nombres de las pestañas del cuaderno sin afectar la representación de la aplicación.

Comments are closed.