Задать вопрос
@Feor_slen

Почему энтри объект игнорирует запросы?

Пытаюсь тренироваться в ООП, есть головной класс App() который поочередно должен вызывать классы фреймов или виджетов чтобы в итоге сложилось приложение и есть два класса каждый из которых является виджетом: энтри и баттон. Суть проблемы в том, что зашитая в кнопку команда объектом энтри игнорируется. Вхождение в нужную функцию есть точно, тестил. Я читал что дело может быть в статусе объекта, мол у энтри помимо дефолтного есть ещё два при которых нельзя ни ввести ни получить данные...
Помогите пожалуйста

ВЕСЬ КОД
import tkinter as tk

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("Calc")
        self.geometry("300x350")
        self.Put_wiget()

    def Put_wiget(self):
        self.Put_Entry = Put_Entry(self).pack(side=tk.TOP, padx=10, pady=15)
        self.Numm_Buttoms = Numm_Buttoms(self).pack(side=tk.TOP, padx=10, pady=15)


class Put_Entry(tk.Entry):
    def __init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        self["justify"] = tk.RIGHT
        self["width"] = 35

    def given(self):
        text = self.get()
        return text

    def insert(self, *char):
        self.insert(0,str(char))

class Numm_Buttoms(tk.Button):
    def __init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        self["command"] = self.e

    def e(self):
        lol = Put_Entry(self)
        text = lol.given()




app = App()
tk.mainloop()


КЛЮЧЕВЫЕ МЕСТА

#в головном классе происходит вызов и размещение других классов-виджетов
    def Put_wiget(self):
        self.Put_Entry = Put_Entry(self).pack(side=tk.TOP, padx=10, pady=15)
        self.Numm_Buttoms = Numm_Buttoms(self).pack(side=tk.TOP, padx=10, pady=15)

#Виджет энтри с функциями 
class Put_Entry(tk.Entry):

    def given(self):
        text = self.get()
        return text

    def insert(self, *char):
        self.insert(0,str(char))

#Виджет кнопка 
class Numm_Buttoms(tk.Button):
    def __init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        self["command"] = self.e

#Создается оббект класса энтри и через него вызывается функция Get()
    def e(self):
        lol = Put_Entry(self)
        text = lol.given()
  • Вопрос задан
  • 119 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
зашитая в кнопку команда объектом энтри игнорируется

Ты в обработчике кнопки сам создаёшь новый экземпляр класса Put_Entry (который является виджетом), нигде его не размещаешь, а просто что-то с ним делаешь. Конечно, уже существующие экземпляры от этого никак не изменяются - твоя кнопка про них ничего не знает и никак их не трогает.

Короче, читай учебник, для начала. У тебя, похоже, полнейшая каша в голове. Разбирайся в понятиях области видимости и времени жизни, для начала - тогда будет понятнее, что где хранить и что куда передавать.
Не говоря уже о том, что я тебе уже два раза показывал, как хоть немного правильно создавать свои UI-классы, но как об стенку горох.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы