访问 tkinter 的入口 .get() 类

问题描述 投票:0回答:1

我刚刚学习Python。有一个问题我还是想不明白。如何将 self.login_field.get() 从 Conectad 类传递到 Query 类

       
class Connectad(Frame): #Фрейм окна логина и пароля
    def __init__(self, parent=None):
        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.validationlogin).grid(row=3, column=2, sticky=W, pady=4)
         
    def connad(self): # Подключение к AD
        self.AD_SERVER = 'dc.local'
        self.AD_USER = self.login_field.get()
        self.AD_PASSWORD = self.pw_field.get()
        self.AD_SEARCH_TREE = 'dc=dc,dc=local'
        self.AD_SEARCH_OU = 'ou=USERS,dc=dc,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():
            #print(self.conn)
            self.parent.switch_frame(Query)
        return self.conn
    def user(self):
        self.logi = self.login_field.get()
        print(self.logi)
        return self.logi

需要寄到这里:

class Query(Frame):

    def __init__(self, parent=None):
        Frame.__init__(self, parent)
        self.parent = parent 

    def adoffice(self): # Создание пользователя офис
        get = Connectad()
        get.user()
        print(get.logi)

家长班:

类应用程序(Tk): def init(自身): Tk.init(自我) self._frame = 无 self.switch_frame(Connectad)

def switch_frame(self, frame_class):
    new_frame = frame_class(self)
    if self._frame is not None:
        self._frame.destroy()
    self._frame = new_frame
    self._frame.pack()

你有什么可以推荐的吗?

python python-3.x tkinter tkinter-entry
1个回答
0
投票

根据您更新的代码,建议将用户名传递给类

Query

class Connectad(Frame):
    ...

    def connad(self):
        ...
        elif self.conn.bind():
            # pass input user name to class Query
            self.parent.switch_frame(Query, user=self.login_field.get())
        ...

class Query(Frame):
    def __init__(self, parent=None, *args, **kwargs):
        super().__init__(parent)
        self.parent = parent

        # get the user name using keyword argument "user"
        self.user = kwargs.get("user")
        print(self.user)

class App(Tk):
    ...

    def switch_frame(self, frame_class, *args, **kwargs):
        if self._frame is not None:
            self._frame.destroy()
        self._frame = frame_class(self, *args, **kwargs)
        self._frame.pack()

请注意,销毁当前帧然后创建新帧并不是切换帧的良好设计。建议在 StackOverflow 搜索有关切换框架的问题。

© www.soinside.com 2019 - 2024. All rights reserved.