Как создать класс super (), содержащий окно Toplevel, и добавить к нему виджеты, используя Simple Inheritance в Python с Tkinter? - PullRequest
0 голосов
/ 26 марта 2020

Я программирую суперкласс с python для отображения окна Toplevel. Это пример моего класса:

# -*- coding: utf-8 -*-

from tkinter import * 
from tkinter import ttk

class Interfaz():
    def __init__(self):

        self.ventana = Toplevel()
        self.ventana.config()

    def Marco(self, Maquina):
        #_______________________________ Frame
        self.Marco = Frame(self, width = "500", height = "600",bg = "#78c679")
        self.Marco.grid()

        #_______________________________ vars

        self.Tipo =                 StringVar(self.Marco, value = Maquina)
        self.miID =                 StringVar()
        self.Marca =                StringVar()
        self.Modelo =               StringVar()

        #_______________________________ Entries
        self.EntradaTipo =                  Entry(self.Marco, textvariable = self.Tipo)
        self.EntradaID =                    Entry(self.Marco, textvariable = self.miID)
        self.EntradaMarca =                 Entry(self.Marco, textvariable = self.Marca)
        self.EntradaModelo =                Entry(self.Marco, textvariable = self.Modelo)

        #_______________________________ grid
        self.EntradaTipo.grid(              row = 0, column = 1, padx = 5, pady = 5)
        self.EntradaID.grid(                row = 1, column = 1, padx = 5, pady = 5)
        self.EntradaMarca.grid(             row = 2, column = 1, padx = 5, pady = 5)
        self.EntradaModelo.grid(            row = 3, column = 1, padx = 5, pady = 5)

Пока все работает хорошо!

Но когда я хочу создать дочерний класс и добавить виджеты в родительский класс, например:

class Interfaz_implemento(Interfaz):
    def __init__(self):
        super().Marco(self, Maquina)

        self.Marca_implemento =                     StringVar()
        self.Modelo_implemento =                    StringVar()
        self.Valor_nuevo_implemento =               StringVar()
        self.Valor_residual_implemento =            StringVar()

        self.EntradaMarca_implemento =              Entry(self, textvariable = Marca_implemento)
        self.EntradaModelo_implemento =             Entry(self, textvariable = self.Modelo_implemento)
        self.EntradaValor_nuevo_implemento =        Entry(self, textvariable = self.Valor_nuevo_implemento)
        self.EntradaValor_residual_implemento =     Entry(self, textvariable = self.Valor_residual_implemento)

        self.EntradaMarca_implemento.grid(          row = 12, column = 1, padx = 5, pady = 5)
        self.EntradaModelo_implemento.grid(         row = 13, column = 1, padx = 5, pady = 5)
        self.EntradaValor_nuevo_implemento.grid(    row = 14, column = 1, padx = 5, pady = 5)
        self.EntradaValor_residual_implemento.grid( row = 15, column = 1, padx = 5, pady = 5)

Работает только суперкласс (интерфейс) и не добавляет виджеты!

Что я делаю не так?

Код завершается следующим образом: показать окно верхнего уровня:

if __name__ =='__main__':
    raiz = Tk()

    obj = Interfaz_implemento.Marco(raiz, "Machine")


    raiz.mainloop() 
...