【问题标题】:Object is not iterable even though i return 2 variables?即使我返回 2 个变量,对象也不可迭代?
【发布时间】:2018-07-15 19:06:41
【问题描述】:

我调用了一个名为 Login_window 的类,其中两个变量“相等”(不知道如何表达,但您会在代码中看到)并且当此行运行时发生错误:“TypeError: 'Login_window' object is not可迭代”。虽然出现此错误,但条目窗口仍然显示其含义,如果我没有 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()

【问题讨论】:

  • Login_window(window)调用returN

标签: python class object tkinter


【解决方案1】:

您的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")

Yours 是一个自定义对象,因此如果您想为其设置两个变量,请分两行进行:

用户名 = 登录窗口(窗口) 密码 = 登录窗口(窗口)

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

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

为了帮助您,我们需要更多关于您想要实现的目标的信息。

【讨论】:

  • 这里是调用它的主要代码,我不能包括所有它,因为它的 3000 charactersish:def Login(): import tkinter3 data = tkinter3.start() entered_user_name=data[0] entered_user_password=data[1] validation=db.UP_validation(entered_user_name,entered_user_password) if validation == None or validation == "Username or Password INCORRECT": print("\nUsername or Password INCORRECT\n") else: print(validation)
  • 我真正想做的是将两个不同输入框中的用户名和密码返回到导入 tkinter 文件的原始代码。我今天对 tkinter 来说是新手,所以我真的没有任何线索,我确实在谷歌上搜索了答案,但我找不到任何东西。不愿在此处发布此内容,但我真的需要弄清楚(或让其他人为我做这件事;/)
猜你喜欢
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多