python - python与sqlite3 db一起工作,从db中保存、更新和检索文本
问题描述
前一天我一直在尝试解决这个问题。并且几乎成功了。但是,我仍然没有得到明确的答案 - 为什么下一个代码不起作用?
import sqlite3
from tkinter import *
from tkinter import ttk
root = Tk()
text = Text(root)
text.pack()
con = sqlite3.connect(':memory:')
c = con.cursor()
c.execute("CREATE TABLE t1 (name)")
c.execute("INSERT INTO t1 VALUES (?)", ('TEST',))
con.commit()
c.execute("SELECT * FROM t1")
text_ = c.fetchall()
text.insert(INSERT, text_)
text.tag_add('one', '1.0', '1.3')
text.tag_config('one', background='blue')
text_get = text.get('1.0', 'end')
c.execute("UPDATE t1 SET name=?", (text_get,))
con.commit()
text.insert(INSERT, '\n')
c.execute("SELECT * FROM t1")
text_ = c.fetchall()
text.insert(INSERT, text_)
root.mainloop()
结果是下一个:保存到 db 之前的 TEXT - 在更新到 db 并取回它之后具有背景颜色 TEXT - 没有。有什么办法让它工作吗?
解决方案
该Text.get()
方法只返回纯文本,但不返回任何标签的信息。
您必须使用其他方法来获取有关标签的信息:
>>> text.tag_names()
('sel', 'one')
>>> text.tag_cget('one', 'background')
'blue'
>>> text.tag_ranges('one')
(<textindex object: '1.0'>, <textindex object: '1.3'>)
该信息需要存储在其他一些列中。或者,将格式代码插入到数据库中保存的文本中。
推荐阅读
- java - 问号而不是 € 和重音字母
- oracle-apex - 我在哪里可以获得有关休假管理系统的示例 Oracle Apex 演示项目?
- android - wifi 连接标题的 Android 10 系统对话框始终为英文
- pointers - 运行命令“go get”时收到警告
- css - 使用具有动态高度的剪辑路径 css 的曲线部分
- android - exoplayer 播放列表中的转换延迟
- angular - 减少多个组件上的相同 http 网络调用
- jquery - 菜单在外部单击时关闭,但仅打开一次
- authentication - 通过使用数据库中的数据更新声明进行授权(Blazor WebAssembly ASP.NET Core 托管)
- sql - 连接两个表并将连接结果添加到动态列