【问题标题】:How to convert a entry to a string [duplicate]如何将条目转换为字符串[重复]
【发布时间】:2020-08-07 15:43:05
【问题描述】:

所以我正在尝试制作自己的登录页面,但在尝试将用户输入保存到文件时遇到错误。我收到一个错误,告诉我我不能(.write)一个它只能做 str 的条目。如何转换或使条目成为 str?

from tkinter import *


root = Tk()

#if user clicks submit

def reg():
    file = open("login.txt", "a")
    file.write(login)

#display login
myLabel = Label(root, text="login")
myLabel.pack()

#creates a user entry
login = Entry(root, textvariable="login")
login.pack()
#submit buttton
Button(root, text="submit", command=reg).pack()
root.mainloop()

【问题讨论】:

  • 您应该删除textvariable="login"textvariable 仅在您将 Entry 小部件与 tkinter 变量(如 tk.StringVar)相关联时使用。

标签: python string file tkinter tkinter-entry


【解决方案1】:

你可以调用 Entry.get() 函数来获取内部字符串

with open("file.txt", "w") as f:
    f.write(login.get())

【讨论】:

  • idk 如果我理解 100% 但我添加了 .write(login.get()) 并且它没有添加输入。
  • 有错误吗?您可以尝试对print(login.get()) 执行操作,看看它是否返回正确的字符串
【解决方案2】:

这里我举个例子:

from tkinter import *


root = Tk()

#if user clicks submit

def reg():
    value=entry.get() # here you get the string
    print(Value)
    file = open("login.txt", "a")
    file.write(Value)
    file.close()

#display login
myLabel = Label(root, text="login")
myLabel.pack()

#creates a user entry
entry = StringVar()
entryv = Entry(root, textvariable=entry)
entryv.grid(row=1, column=1, columnspan=2,rowspan=1)    
#submit buttton
Button(root, text="submit", command=reg).pack()
root.mainloop()

【讨论】:

  • 我有点新想法,但如果我理解正确,我试过了。它没有给我一个错误,但也没有打印
【解决方案3】:

此代码按预期工作。

from tkinter import *

root = Tk()

#if user clicks submit

def reg(var):
    with open("login.txt", "a") as file:
        file.write(var.get())


#display login
myLabel = Label(root, text="login")
myLabel.pack()

#creates a user entry
login_var = StringVar()
entryv = Entry(root, textvariable=login_var).pack()

#submit buttton
Button(root, text="submit", command= lambda: reg(login_var)).pack()
root.mainloop()

【讨论】:

  • 感谢您的帮助!我做了所有这些,我得到了这个错误“ reg() 接受 0 个位置参数,但给出了 1 个”
  • @GoToStateFarm 可能你错过了一些东西。现在检查一下,我已经放了整个代码。
  • 你知道如何提交多个条目,例如用户名、密码和姓名吗?
  • 只需使用提交按钮中的command 选项将它们全部传递给reg() 函数。像这样的东西:command = lambda: reg(username, password, name)
  • 所以我试过了,现在我得到一个 TKinter 回调错误...
猜你喜欢
  • 1970-01-01
  • 2012-04-13
  • 2021-06-17
  • 2012-10-22
  • 2019-11-28
  • 2019-12-06
  • 2015-06-02
  • 2015-07-18
  • 1970-01-01
相关资源
最近更新 更多