簡體   English   中英

如何訪問類變量?

[英]How do I access class variables?

在此程序中,我希望用戶輸入憑據,然后根據輸入內容驗證其是否正確。 我正在使用tkinter提供一個GUI。 我希望能夠將auth函數帶到該類之外,以便一旦登錄帳戶即可關閉tkinter對話框,但是,這里的問題是auth函數位於該類之內,我嘗試了各種方法檢索變量,但我沒有運氣。

from tkinter import *
import tkinter.messagebox as tm

class LoginFrame(Frame):
    def __init__(self, master):
        super().__init__(master)

        self.label_Email = Label(self, text="Email")
        self.label_password = Label(self, text="Password")

        self.entry_Email = Entry(self)
        self.entry_password = Entry(self, show="*")

        self.label_Email.grid(row=0, sticky=E)
        self.label_password.grid(row=1, sticky=E)
        self.entry_Email.grid(row=0, column=1)
        self.entry_password.grid(row=1, column=1)

        self.checkbox = Checkbutton(self, text="Keep me logged in")
        self.checkbox.grid(columnspan=2)

        self.logbtn = Button(self, text="Login", command=self._login_btn_clicked)
        self.logbtn.grid(columnspan=2)

        self.pack()

    def _login_btn_clicked(self):
        # print("Clicked")
        Email = self.entry_Email.get()
        password = self.entry_password.get()

        # print(Email, password)

        self.answer = auth(Email, password)



root = Tk()
lf = LoginFrame(root)

if 'Bearer' in lf.answer:
    root.quit()

root.mainloop()

如果登錄成功,我的auth函數將返回下一階段的承載令牌,因此,我正在檢查answer變量是否已返回它。 如果有,那么我將關閉tkinter對話框

您以錯誤的“順序”正確訪問了實例變量。 意思是,必須在單擊按鈕后才檢查答案。 基本上,當您的GUI加載時,或者在制作框架后,都不會單擊按鈕,因此未定義變量,但是您嘗試立即訪問它

一個簡單的選擇是不訪問實例變量,而僅使用主服務器的傳入Tk對象

def _login_btn_clicked(self):
    # print("Clicked")
    Email = self.entry_Email.get()
    password = self.entry_password.get()

    # print(Email, password)

    answer = auth(Email, password)
    if 'Bearer' in answer:
        self.master.quit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM