我在理解如何控制文本文件中字符串输出方面遇到问题。我创建了一个函数,该函数在Tkinter的整个条目中收集来自用户的所有输入。然后将这些变量发送到另一个函数,该函数创建一个文本文件并附加信息。
我尝试过用Google搜索任何解决方案,但没有运气或无法理解其他解决方案。您看到的代码占整体代码的1%,这就是为什么它看起来很奇怪的原因。
from tkinter import *
from tkinter import ttk
import sqlite3
import webbrowser
root = Tk()
root.geometry('1030x400')
Label(root, bg="black").place(x=0, y=0)
fname = StringVar(root, value="Your first name")
lastname = StringVar(root, value="Your last name")
def personal_info():
persinf = Toplevel(root)
persinf.geometry('800x500')
persinf.configure(background="light blue")
ttk.Entry(persinf, textvar=fname).place(x=40, y=110)
ttk.Entry(persinf, textvar=lastname).place(x=240, y=110)
Button(persinf, text='Save', width=15, bg='brown', fg='black', command=personal_save).place(x=580, y=450)
def personal_save():
with open('Personal information.txt', 'a') as f:
f.write(fname.get())
f.write(lastname.get())
Button(root, text='Add personal information', width=25, bg='brown', fg='black', command=personal_info).\
place(x=50, y=200)
root.mainloop()
我的代码生成的文本文件是: 例如: 山姆·丹尼尔森 问题:文本输出全部放在一起。
我想要实现的是分离输出: 名:Sam 姓氏:Danielsen
答案 0 :(得分:0)
您可以先形成要保存的行,然后将其添加到文本文件中;可能是这样的:
from tkinter import *
from tkinter import ttk
import sqlite3
import webbrowser
root = Tk()
root.geometry('1030x400')
Label(root, bg="black").place(x=0, y=0)
fname = StringVar(root, value="Your first name")
lastname = StringVar(root, value="Your last name")
def personal_info():
persinf = Toplevel(root)
persinf.geometry('800x500')
persinf.configure(background="light blue")
ttk.Entry(persinf, textvar=fname).place(x=40, y=110)
ttk.Entry(persinf, textvar=lastname).place(x=240, y=110)
Button(persinf, text='Save', width=15, bg='brown', fg='black', command=personal_save).place(x=580, y=450)
def personal_save():
with open('Personal information.txt', 'a') as f:
line = f'{fname.get()}, {lastname.get()}\n'
f.write(line)
Button(root, text='Add personal information', width=25, bg='brown', fg='black', command=personal_info).\
place(x=50, y=200)
root.mainloop()
Personal information.txt
:
Reblochon, Masque
Arash, Mithraian
Asdo, de Merck