【发布时间】:2016-08-26 17:32:16
【问题描述】:
我正在学习 Python 课程,当前的任务是从数据库中获取信息,将其添加到文本框,然后根据文本框内的内容创建 HTML 文件。
一切都完美无缺,换行符与我将它们输入数据库的方式完全相同。唯一的问题是“{{”和“}}”在从数据库中检索到文本后被添加到文本周围。所以我把文本变成了一个字符串,然后用 [3:-4] 把它切掉。但是,由于它现在是一个字符串,所以当它被输入到文本框时,它现在会在文本中直接写入“\n”。
无论如何要切掉括号,不包括“\n”文本,但仍然保留换行符?
这是文本框在我将其转换为字符串和切片之前显示的内容:
{{这是我的文字! 它看起来很干净,因为它有换行符。 甜蜜!}}
在我把它变成一个字符串并切断末端之后:
这是我的文字!\n\n括号不见了,但现在你可以看到换行代码。\n\n蹩脚!
我可以两全其美吗?这是我的代码:
# Grabs info from database on button click
def getContent(self):
c.execute("SELECT HTML FROM Content WHERE conName ='{}'".format(self.contentBox.get()))
fetch = (c.fetchall())
return str(fetch)[3:-4]
# Inserts content into textbox
def setContent(self):
self.clear()
combo = self.getContent()
self.text_body.insert(END,combo)
【问题讨论】:
-
不要直接使用
str.format,否则容易被SQL注入攻击。 -
在我的脚本中访问数据库的唯一方法是从只读组合框中的五个选项中选择一个。
-
@NathanR 攻击者可以轻松修改浏览器端的组合框。永远不要相信客户。
-
A Text(box) 自动换行,即添加换行符。创建实例时将 wrap="none" 传递给 Text 类。
-
我会记住这一点的!目前,学习如何将 tkinter GUI 与 SQLite3 结合起来只是一个简单的练习。一个都不上线,数据库里全是我编的傻事。
标签: python tkinter sqlite textbox