Не получается передать переменную из класса Connectad def connad в Query def adoffice. Всю голову сломал.
class App(Tk): def __init__(self): Tk.__init__(self) self._frame = None self.switch_frame(Connectad) def switch_frame(self, frame_class): """Destroys current frame and replaces it with a new one.""" new_frame = frame_class(self) if self._frame is not None: self._frame.destroy() self._frame = new_frame self._frame.pack() class Connectad(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent Label(self,text='Логин:').grid(row=0) self.login_field = Entry(self,width=30) self.login_field.grid(row=0,column=1) Label(self,text='Пароль:').grid(row=1) self.pw_field = Entry(self,show = '*', width=30) self.pw_field.grid(row=1,column=1) self.notlogon = Label(self,text='Не верный логин или пароль',fg='red', font=("Arial", 14)) self.notlogon.grid_remove send_button = Button(self, text='Отправить',bg='#4a7abc', fg='yellow', activebackground='green', activeforeground='white',command=self.connad).grid(row=3, column=2, sticky=W, pady=4) def validationlogin(self): #Проверка логина и пароля на пустые поля pw = self.pw_field.get() login = self.login_field.get() msg = '' if len(pw) == 0 or len(login) == 0: msg = 'Логин или пароль не могут быть пустыми' mb.showinfo('message', msg) else: self.connad() def connad(self): # Подключение к AD self.AD_SERVER = 'dc.world.local' self.AD_USER = self.login_field.get() self.AD_PASSWORD = self.pw_field.get() self.AD_SEARCH_TREE = 'dc=world,dc=local' self.AD_SEARCH_OU = 'ou=users,dc=world,local' self.server = Server(self.AD_SERVER, use_ssl=True) self.conn = Connection(self.server,user=self.AD_USER,password=self.AD_PASSWORD) print(self.conn.bind) if not self.conn.bind(): print('False') elif self.conn.bind(): self.parent.switch_frame(Query) class Query(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent #self.wind = window #self.wind.title('Создание пользователя') self.message = Label(self,text = '', fg = 'green').grid(row = 3, column = 0, columnspan = 2, sticky = W + E) # таблица слов и значений columns = ("#1", "#2", "#3", "#4", "#5") self.tree = ttk.Treeview(self,height = 20, columns = columns) self.tree.grid(row = 4, column = 0, columnspan = 4) self.tree.heading('#0', text = 'Фамилия', anchor = CENTER) self.tree.heading('#1', text = 'Имя', anchor = CENTER) self.tree.heading('#2', text = 'Отчество', anchor = CENTER) self.tree.heading('#3', text = 'Логин', anchor = CENTER) self.tree.heading('#4', text = 'Отдел', anchor = CENTER) self.tree.heading('#5', text = 'Заявитель', anchor = CENTER) # кнопки редактирования записей ttk.Button(self,text = 'Принять', command = self.adoffice).grid(row = 5, column = 2, sticky = W + E) ttk.Button(self,text = 'Изменить', command = self.edit_word).grid(row = 5, column = 1, sticky = W + E) ttk.Button(self,text = 'Обновить', command = self.get_words).grid(row = 5, column = 0, sticky = W + E) #ttk.Button(text = 'Выход', command = self.wind.destroy).grid(row = 5, column = 3, sticky = W + E) # заполнение таблицы self.get_words() def mailoffice(self,cn,otdel): # Создание почты Офиса psconn = subprocess.run(['powershell', '$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mail01/PowerShell/ -Authentication Kerberos;', 'Import-PSSession $Session -DisableNameChecking;',f'Enable-Mailbox -Identity {cn} -Database BykIT2021;', 'Remove-PSSession $Session;']) def adoffice(self): # Создание пользователя офис famaly = self.tree.item(self.tree.selection())['text'] nameuser = self.tree.item(self.tree.selection())['values'][0] nameuser2 = self.tree.item(self.tree.selection())['values'][1] cn = self.tree.item(self.tree.selection())['values'][2] otdel = self.tree.item(self.tree.selection())['values'][3] conn.search('DC=world,DC=local',f'(&(objectclass=user)(sAMAccountName={cn}))', attributes=['sAMAccountName']) print(conn.entries) if not conn.entries: conn.add(f'CN={famaly} {nameuser} {nameuser2},OU={otdel},OU=USERS,DC=world,DC=local', 'user', {'cn': f'{famaly} {nameuser} {nameuser2}', 'givenName': {nameuser}, 'sn': {famaly}, 'department': {otdel}, 'company': 'world', 'initials': {nameuser2[0]}, 'info': {gp.genpass}, 'displayName': f'{famaly} {nameuser} {nameuser2}', 'sAMAccountName': {cn}, 'userPrincipalName': f'{cn}@world.local', f'telephoneNumber': '0001' }) conn.extend.microsoft.unlock_account(f'CN={famaly} {nameuser} {nameuser2},OU={otdel},OU=USERS,DC=world,DC=local') conn.extend.microsoft.modify_password(f'CN={famaly} {nameuser} {nameuser2},OU={otdel},OU=USERS,DC=world,DC=local', new_password=gp.genpass, old_password=None) conn.modify(f'CN={famaly} {nameuser} {nameuser2},OU={otdel},OU=Users,DC=world,DC=local', {'userAccountControl': (MODIFY_REPLACE, [512])}) self.mailoffice(cn,otdel) self.close_request(cn)