Ну тут сразу возникает вопрос: какую задачу выполняет этот метод. Ты говоришь, что метод используется другим классом. Окей, это норма. Для чего он используется? Какую задачу другой класс хочет решить вызовом этого метода?
Вопрос связан с тем, что ты почему-то создаёшь элементы управления в методе put_wigets(). По идее, если твой класс представляет собой группу элементов управления, он должен создавать дочерние элементы в своём конструкторе, и сохранять ссылки на них в приватные (ну, насколько это можно в питоне) поля класса. Методы класса должны к этим полям обращаться. Исходи из того, что локальная переменная в методе (как Ent_numberBox ) живёт только во время вызова этого метода, и не должна содержать ничего, что переживёт этот метод (если это не возвращаемое значение).
Например, так:import tkinter as tk
class InputBox(tk.Frame):
def __init__(self, master, **kwargs):
# вызываем унаследованный конструктор
super().__init__(master, **kwargs)
# переменные tkinter можно связывать с элементами управления
# тогда изменение в переменной отобразится в элементе, и наоборот
# это бывает удобнее, чем дёргать элемент напрямую
# а ещё можно самим реагировать на изменения значения такой переменной
self.__value = tk.StringVar()
# наше поле ввода
self.__entry = tk.Entry(self, justify=tk.RIGHT, width=22, textvariable=self.__value)
self.__entry.pack(side=tk.RIGHT, padx=10, pady=15)
# метка с пояснением
self.__helptext = tk.Label(self, bg=self['background'], height=3, text="Введите мат. выражение:")
self.__helptext.pack(side=tk.LEFT)
def get_value(self) -> str:
"""Возвращает введённую строку."""
return self.__value.get() # метод get() позволяет прочитать значение переменной tkinter
def set_value(self, value: str) -> None:
"""Заменяет содержимое введённой строки новым."""
self.__value.set(value) # метод set() позволяет задать новое значение для переменной
def append(self, symbol: str) -> None:
"""Добавляет символ(ы) к уже введённой строке."""
self.__value.set(self.__value.get() + symbol)
if __name__ == '__main__':
root = tk.Tk()
box = InputBox(root)
box.pack(side=tk.TOP, expand=True, fill=tk.BOTH)
box.set_value('Hello')
box.append(', world!')
root.mainloop()
Я в этом примере исходил из своего понимания твоей задачи.
Если это поле ввода, то мы хотим иметь возможность получить введённое значение. Поэтому метод get_value().
Также ты упомянул необходимость в том, чтобы изменить это значение извне, из другого класса. Значит, нужен метод set_value().
Также, если это - часть калькулятора, у тебя будет часто встречаться задача "добавить один символ в конец строки". Это можно реализовать через пару get_value()/set_value(), но будет удобнее иметь отдельный метод append().
Один метод - одна решаемая задача.