从类中实例化类

2024-04-25 17:43:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为我的应用程序建立一个登录屏幕,我只是想知道这是否是一个合适的方式去做这件事。我已经设置好了它,以便Button命令检查凭证并实例化一个新类(这只是一个新框架),如果它们是正确的

class Login():

    def __init__(self, master):

        self.frame = Frame(master)
        self.frame.pack()

        self.logo = Label(self.frame)
        self.logo.grid(row=0, columnspan=2)

        self.user_name = Label(self.frame, text="Username:")
        self.pw = Label(self.frame, text="Password:")
        self.entry_1 = Entry(self.frame)
        self.entry_2 = Entry(self.frame, show="*")

        self.user_name.grid(row=1, column=0)
        self.pw.grid(row=3, column=0)

        self.entry_1.grid(row=2, column=0)
        self.entry_2.grid(row=4, column=0)

        self.login_button = Button(self.frame, text="Login", command=self.attempt)
        self.login_button.grid(row=5,columnspan=2)

    def attempt(self, *args):
        if self.entry_1.get() == "USER" and self.entry_2.get() == "PASS":
            self.frame.forget()
            load = newFrame(root)
        else:
            print("Try Again")
            self.try_again = Label(self.frame, text="Incorrect Username or Password", bg="#474747", fg="lightgray")
            self.try_again.grid(row=9,columnspan=2)

class newFrame():

    def __init__(self, master2):


        self.a_var = IntVar()
        self.b_var = IntVar()

        frame_main = Frame(master2)
        frame_main.grid(row=2, column=2)

        a_check = ttk.Checkbutton(frame_main,text="A",variable=self.a_var)
        a_check.grid()

        b_check = ttk.Checkbutton(frame_main,text="B",variable=self.b_var)
        b_check.grid()

        frame_bottom = Frame(master2)
        frame_bottom.grid(row=3, column=2)

        self.scan_button = Button(frame_bottom, text="Scan", command=MasterScan)
        self.scan_button.grid()

root = Tk()
new = Login(root)

我的问题是我很难从这个新实例化的类中访问变量

有什么建议吗

谢谢


Tags: textselfmainvardefchecklogincolumn
1条回答
网友
1楼 · 发布于 2024-04-25 17:43:55

我现在在您的代码中看到的问题是您正在进行以下调用:

load = newFrame()

但是,您的类定义为:

class newFrame():

    def __init__(self, master2):

这表明由于__init__()是如何定义的,当您尝试实例化newFrame时,它需要一个参数,而您没有提供任何参数

我不知道您的代码的其余部分是什么样子的,如果您在__init__()中为newFrame()类使用master2。但你可能想看看

作为一点额外信息,请不要将类命名为newFrame()。相反,使用以下格式:NewFrame()

下面是帮助您的样式指南:https://www.python.org/dev/peps/pep-0008/

相关问题 更多 >