Zacznijmy od tego, że dziwnie definiujesz metody klasy. Metoda powinna przyjmować jeden argument, przeważnie nazywany self, który jest referencją do obiektu na którym wywołana została metoda. U Ciebie metody są statyczne, ale bez dekoratora @staticmethod przez co nie możesz ich wywołać na obiekcie:
a = A()
A.b() # <- działa
a.b() # <- error
Jeśli faktycznie wiesz co robisz i miałeś na myśli metody statyczne to jest kilka opcji:
- brzydka - zmienna globalna:
zmienna = None
class A:
@staticmethod
def b():
global zmienna
zmienna = 4
class B:
@staticmethod
def main():
def c():
# i tu potrzebuje "zmienna"
global zmienna
print(zmienna)
zmienna = 10
c()
A.b()
B.main()
- jeśli jest taka możliwość to zwrócić zmienna z metody b:
class A:
@staticmethod
def b():
zmienna = 4
return zmienna
class B:
@staticmethod
def main():
def c():
# i tu potrzebuje "zmienna"
zmienna = A.b()
print(zmienna)
c()
A.b()
B.main()
EDIT po zobaczeniu kodu:
def takedata_and_close():
self.name = self.name_edit.text()
i do name dobierasz się przez obiekt add_data:
a = add_data()
print(a.name)
zakładając że gdzieś ten obiekt stworzysz i będziesz miał do niego dostęp w klasie Main_window