Я программирую суперкласс с 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()