Ваш класс Functions
не работает должным образом, потому что вы не настроили его методы для работы в качестве методов. Обычный метод должен ожидать, что экземпляр класса будет передан в качестве первого аргумента (по соглашению этот аргумент называется self
, хотя это не обязательно).
После того, как у вас есть self
В качестве аргумента вы можете создать атрибуты для хранения данных, которые передаются в ваши методы. Это, вероятно, то, что вы ищете здесь.
Попробуйте это:
class Functions:
def file_dialog(self):
self.pathname = tkFileDialog.askopenfilename()
Теперь, если вы создаете экземпляр с именем funks
и передаете funks.file_dialog
в качестве обратного вызова для вашей кнопки , он сохранит имя файла, выбранное пользователем, как funks.pathname
. Обратите внимание, что я переименовал несколько имен ваших функций и переменных, чтобы они лучше отображались в Python типичном стиле, где CapitalizedNames
используются только для классов, а большинству других переменных (и функций) присваивается lower_case_names_with_underscores
.
Обратите внимание, что вы, возможно, захотите структурировать свой код по-другому и не называть свой класс Functions
, поскольку цель класса в действительности должна состоять в том, чтобы связать кучу data вместе (с помощью связанных методов). Классы обычно не просто используются в качестве пространства имен для помещения несвязанных функций. Если вам просто нужно пространство имен, то очевидным выбором является модуль. Я думаю, что класс действительно имеет смысл в ситуации, о которой вы здесь спрашиваете, но вы должны назвать класс с учетом его данных! Если вы имеете дело с несвязанными данными в разных частях кода, это говорит о том, что вам, вероятно, нужны разные классы для этих частей.