python - 使用 Tkinter 按 Enter 键时文本未保存在文本文件中

标签 python python-2.7 file tkinter

我正在构建一个聊天 GUI。按下回车键时,我希望文本字段显示在文本框中并保存在文件中。我不想使用单独的按钮。它正确显示在文本框中,但未保存在文件中。请告诉我如何做到这一点。这是我第一次使用 tkinter。

from Tkinter import *

root = Tk()

frame = Frame(root, width=300, height=1000)
frame.pack(side=BOTTOM)

#username entry
L1 = Label(frame, text="User Name")
L1.pack(side = LEFT)
input_username = StringVar()
input_field1 = Entry(frame, text=input_username, width=10)
input_field1.pack(side=LEFT, fill=X)

#addresee entry
L2 = Label(frame, text="@")
L2.pack(side = LEFT)
input_addresee = StringVar()
input_field2 = Entry(frame, text=input_addresee, width=10)
input_field2.pack(side=LEFT, fill=X)

#user comment entry
L3 = Label(frame, text="Comment")
L3.pack(side = LEFT)
input_usertext = StringVar()
input_field3 = Entry(frame, text=input_usertext, width=100)
input_field3.pack(side=LEFT, fill=X)

#write to a file
def save():
    text = input_field1.get() + input_field2.get() + input_field3.get() 
    with open("test.txt", "w") as f:
        f.write(text)

#chat box
chats = Text(root)
chats.pack()

def Enter_pressed(event):
    input_get_name = input_field1.get()
    print(input_get_name)
    chats.insert(INSERT, '%s    : ' % input_get_name)
    input_username.set('')

    input_get_add = input_field2.get()
    print(input_get_add)
    chats.insert(INSERT, '@%s   : ' % input_get_add)
    input_addresee.set('')

    input_get_comment = input_field3.get()
    print(input_get_comment)
    chats.insert(INSERT, '%s\n' % input_get_comment)
    input_usertext.set('')
    save()

frame2 = Frame(root)
L2_1 = Label(frame2, text="All chats")
L2_1.pack(side = TOP)
input_field1.bind(Enter_pressed)
input_field2.bind(Enter_pressed)
input_field3.bind("<Return>", Enter_pressed)
frame2.pack()

root.mainloop()

最佳答案

正如您所说,您将输入字段设置为空白

解决方案如下:

def save(text):
    with open("test.txt", "w") as f:
        f.write(text)

调用保存时:

save(input_get_name+": "+input_get_add+": "+input_get_comment)

关于python - 使用 Tkinter 按 Enter 键时文本未保存在文本文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43033328/

相关文章:

java - 打印奇数行 - 行计数器递增两次

python - 拆分列正则表达式数据框 python

python - 如何获取 .wav 文件格式的 numpy 数组输出

python - 如何使用open方法在python中读取文本文件

python - 根据列表中每个元组的长度克隆列表中的元组

c++ - 多重包含错误,找不到解决方案

python - Python 使用什么样的逻辑来处理 bool 表达式?

python - openstack:novaclient Python API 不工作

python - 从 div 标签 Python 中提取数据

c# - 如何在存储到文件和数据库之前更改文件名