即使我返回2个变量,对象也是不可迭代的?

时间:2018-07-15 19:06:41

标签: python class object tkinter

我用两个变量“等于”调用名为Login_window的类(不确定如何措词,但您会在代码中看到),并且在此行运行时发生错误:“ TypeError:'Login_window'对象不是迭代”。尽管出现此错误,但输入窗口仍显示其含义,如果我没有Login_window“等于”两个变量,则可以打印该输入。

这里的代码出了问题(我没有提供很多,因为其余的都可以使用,不需要):

class Login_window():
    def __init__(self,window):
        self.window = window
        self.window.title("Login")

        top_frame = LabelFrame(self.window)
        top_frame.grid(row=0,column=0)

        mid_frame = LabelFrame(self.window)
        mid_frame.grid(row=2,column=0)

        bottom_frame= LabelFrame(self.window)
        bottom_frame.grid(row=3,column=0)
        Label(top_frame,text = "Enter username:").grid(row=1,column=0)
        self.username_entry = Entry(top_frame)
        self.username_entry.grid(row = 1, column = 1)

        Label(mid_frame,text = "Enter password:").grid(row=3,column=0)
        self.password_entry = Entry(mid_frame)
        self.password_entry.grid(row = 3,column = 3)

        ttk.Button(bottom_frame , text = 'Enter',command = self.returN).grid(row=4,column=0)

    def returN(self):
        username=self.username_entry.get()
        password=self.password_entry.get()
        return username,password


def start():
    window=Tk()
    username,password=Login_window(window)
    return username,password
    window.mainloop()

1 个答案:

答案 0 :(得分:0)

您的start()函数无法正常运行,如下所示:

def start():
    window=Tk()
    username,password = Login_window(window)
    return username,password
    window.mainloop()

首先,函数返回后无法执行代码window.mainloop()

第二,不能像您一样将Login_window类分配给两个变量。那就是“不令人陶醉”的错误。您将需要一个具有两个值的元组来执行此操作。例如:username, password = ("my_username", "my_password")

您的用户是一个自定义对象,因此,如果要为其设置两个变量,请在两行中进行操作:

用户名= Login_window(窗口) 密码= Login_window(窗口)

请注意,这也没有意义,因为您只有一个窗口(等于Tk()),所以为什么需要两次引用它?另外,不清楚为什么用户名和密码之类的变量应等于窗口对象而不是字符串。

最后,return(self)方法看起来应该是您的类的一部分,但缩进意味着它不是。

我们需要有关您要达到的目标的更多信息,以帮助您。