【问题标题】:How to take information that takes entered into a entry box and save(dump) it in a text file(json)如何获取输入到输入框中的信息并将其保存(转储)到文本文件(json)中
【发布时间】:2020-08-09 17:12:03
【问题描述】:

我创建了一个程序,它应该将用户名和密码转储到 json 文件中

但是我在解决它时遇到了问题

请帮忙

def createAccount():
    A = tk.StringVar()
    B = tk.StringVar()
    root1 = Tk()
    root1.resizable(0, 0)
    root1.title('Signup')
    instruction = Label(root1, text='Please Enter new Credentials')
    instruction.grid(row=0, column=0, sticky=E)

    nameL = Label(root1, text='New Username: ')
    pwordL = Label(root1, text='New Password: ')
    nameL.grid(row=1, column=0, sticky=W)
    pwordL.grid(row=2, column=0, sticky=W)

    nameE = Entry(root1, textvariable=A)
    pwordE = Entry(root1, textvariable=B )
    nameE.grid(row=1, column=1)
    pwordE.grid(row=2, column=1)

    signupButton = Button(root1, text='Signup')
    signupButton.grid(columnspan=2, sticky=W)
    root1.mainloop()
    username = A
    password = B
    with open('user_accounts.json', 'r+') as user_accounts:
        users = json.load(user_accounts)
        if username in users.keys():
            print('error')

        else:
                users[username] = [password, "PLAYER"]
                user_accounts.seek(0)
                json.dump(users, user_accounts)
                user_accounts.truncate()
                print("success")

我尝试使用 tk.StringVar() 将用户名和密码转换为字符串

但是显示错误

请提供任何合适的解决方案

【问题讨论】:

  • 该错误是因为您尝试使用 StringVars 本身,而不是在它们上调用 .get() 来检索其内容。但是您在这里有一个更根本的问题 - 您在创建小部件后立即执行此操作,用户不可能输入任何内容,实际上小部件甚至在那个时候的画面。您需要稍后执行需要用户输入的所有操作,通常在指定为 Button 的 command= 选项的函数中。
  • 请不要发布错误图片。花点时间在您的问题中复制、粘贴和格式化它。

标签: python python-3.x tkinter tk


【解决方案1】:

tkinter 标签不使用普通的 Python 变量类型。相反,他们使用 tcl 类型,例如StringVar。要获取此类变量的值,您可以调用它们的 .get() 方法,该方法返回一个原生 Python 值。现在您可以随意转换、更改和使用它了:)

【讨论】:

  • 它会创建一个空白的用户名和密码,并将其添加到 json 文件中......解决方案是什么
  • 很难说,因为我看不到代码也看不到错误...你能分享完整的代码并详细说明失败吗?
  • 明确地说,你是这样分配的:username = A.get(),password = B.get()?还是您在其他地方打电话给.get()? @Bhaskarpal
  • 小问题:.get() 方法不返回变量,它返回一个原生值,例如字符串或整数。
  • @pitamer 我得到了我的解决方案,我做了一些改变,thnx 很多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 2014-09-27
相关资源
最近更新 更多