python-3.x - 更改时要归档的 Python 文本
问题描述
我正在寻找一种从文本区域(有很多文本)更新 name.txt 的方法,但我不想有提交按钮。想法是当文本区域发生变化时,自动保存内容。
希望也许有人能给我一个我可以搜索的方向:-)
import tkinter as tk
def writefile():
with open("./name.txt", "r+") as f:
f.truncate(0)
f.writelines(name.get())
print("File has been written !")
root.update()
root = tk.Tk()
root.geometry('700x600')
root.title("Writers tool")
root.rowconfigure(0, minsize=800, weight=1)
root.columnconfigure(1, minsize=800, weight=1)
frame = tk.Frame(root, bg = "yellow")
frame.place(relwidth = 2, relheight = 1)
frame.pack()
name = tk.StringVar()
name.trace("w", lambda l, idx, mode: writefile())
entry = tk.Text(root, height=10, width=100)
entry.place(relx = 0.25, rely = 50, relwidth=10)
entry.place(relx = 0.25, rely = 0.05, relwidth = 1, relheight = 0.1)
entry.focus_set()
entry.pack()
root.mainloop()
解决方案
那么如何将输入字段更改为 textarea 并且仍然通过 textvariable = name 来更新 name.txt?
你不能。小Text
部件不支持该textvariable
选项。不过,您不需要它,您可以从小部件中获取数据,就像使用textvariable
. 即,通过调用get
小部件上的方法。
在您的特定情况下,您可以修改writefile
为如下所示:
def writefile():
data = entry.get("1.0", "end-1c")
with open("./name.txt", "r+") as f:
f.truncate(0)
f.writelines(data)
print("File has been written !")
root.update()
推荐阅读
- sql - 使用 SQL GROUP BY 计算持续时间时如何跳过间隙
- python - 编写我自己的 ufunc;输入类型不支持 ufunc
- html - 是否可以使用 Cypress 获取第 n 个孩子的内容?
- javascript - 我如何对firebase时间戳数据反向reactjs进行排序
- git - 如何分叉一个不在 github 上的 NPM 包?
- java - 通过 Java API 从 Excel 文件创建 AWS Quicksight 数据源
- javascript - 有没有办法拦截js中用[]触发的方法?
- javascript - Javascript请求延迟网站加载时间
- node.js - 托管在 Express 上的 React 应用程序未通过 Apache ProxyPass 正确路由
- c# - 是否可以在 C# 中为 Windows 窗体转移焦点?