Супер и Ткинтер - PullRequest
       17

Супер и Ткинтер

0 голосов
/ 24 марта 2019

Помощь новичка в Super в Tkinter.

Я пытаюсь понять, как использовать super () в приложении tkinter.Мне нужно ссылаться на атрибуты из родительского класса.Из кода нажатие кнопки с вызовом super (). init вызывает другого родителя и не ссылается на информацию по мере необходимости.с super (). init не вызывается, то есть закомментировано, выдает ошибку атрибута.Может кто-нибудь сказать мне, как вызвать супер атрибуты без перезаписи (и перезаписи) исходной информации.

import tkinter as tk

class Parent():

    def __init__(self,master):

        self.sym = 'tree'
        self.cl = 3
        self.enter = tk.Entry(master)
        self.enter.pack()
        self.button = tk.Button(master,text='text', command= lambda: Child(master))
        self.button.pack()


class Child(Parent):

    def __init__(self,master):
#        super().__init__(master)
        print(self.enter.get(), self.cl)

root = tk.Tk()
a = Parent(root)
root.mainloop()

1 Ответ

0 голосов
/ 24 марта 2019

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

Правильный способ создания подклассов - , а не , создать экземпляр Parent. Вместо этого создайте экземпляр Child. При этом экземпляр Child будет иметь доступ ко всему в определении родительского класса.

Пример:

import tkinter as tk

class Parent():

    def __init__(self,master):

        self.sym = 'tree'
        self.cl = 3
        self.enter = tk.Entry(master)
        self.enter.pack()
        self.button = tk.Button(master,text='text', command= self.print_value)
        self.button.pack()

class Child(Parent):

    def __init__(self,master):
        super().__init__(master)
        print(self.enter.get(), self.cl)

    def print_value(self):
        print(self.enter.get())


root = tk.Tk()
a = Child(root)
root.mainloop()
...