在wxPython中使用SQLite数据库
发布时间:2023-12-24 02:31:14
wxPython是一个开源的Python库,用于创建内嵌Python的图形用户界面(GUI)。SQLite 是一个轻量级的嵌入式数据库引擎,适用于各种规模项目。将wxPython与SQLite结合使用,我们可以创建一个具有数据库功能的GUI应用程序。
下面是一个简单的使用wxPython和SQLite的示例:
import wx
import sqlite3
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(None, title="SQLite Example")
# 创建一个数据库连接
self.conn = sqlite3.connect("mydatabase.db")
# 创建一个游标对象
self.cursor = self.conn.cursor()
# 创建一个表来存储数据
self.cursor.execute("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, name VARCHAR(100))")
# 创建GUI界面的各个组件
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
self.txt_name = wx.TextCtrl(panel)
vbox.Add(self.txt_name, 0, wx.ALL|wx.EXPAND, 5)
btn_add = wx.Button(panel, label="Add")
vbox.Add(btn_add, 0, wx.ALL, 5)
btn_show = wx.Button(panel, label="Show")
vbox.Add(btn_show, 0, wx.ALL, 5)
self.lst_names = wx.ListBox(panel)
vbox.Add(self.lst_names, 1, wx.ALL|wx.EXPAND, 5)
panel.SetSizer(vbox)
# 绑定事件处理函数
btn_add.Bind(wx.EVT_BUTTON, self.on_add)
btn_show.Bind(wx.EVT_BUTTON, self.on_show)
def on_add(self, event):
# 从文本控件中获取输入的名称
name = self.txt_name.GetValue()
# 向数据库插入数据
self.cursor.execute("INSERT INTO mytable (name) VALUES (?)", (name,))
self.conn.commit()
# 清空文本控件
self.txt_name.SetValue("")
def on_show(self, event):
# 查询数据库中的数据
self.cursor.execute("SELECT name FROM mytable")
names = self.cursor.fetchall()
# 清空列表框
self.lst_names.Clear()
# 在列表框中显示查询结果
for name in names:
self.lst_names.Append(name[0])
def __del__(self):
# 关闭数据库连接
self.cursor.close()
self.conn.close()
if __name__ == "__main__":
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()
在这个例子中,我们首先创建一个数据库连接,并使用游标对象创建一个名为mytable的表来存储数据。然后,我们创建了一个简单的GUI界面,包含一个文本框、一个添加按钮、一个显示按钮和一个列表框。
当用户点击添加按钮时,程序将读取文本框中的值,并将该值插入到数据库中。在显示按钮被点击时,程序将查询数据库并在列表框中显示结果。
在使用完数据库之后,我们需要在__del__方法中关闭数据库连接,以释放资源。
这只是一个基础的例子,你可以基于这个示例进行扩展,添加更多的功能和界面元素。同时,你还可以使用wxPython的其他功能和SQLite的其他功能,以满足你的具体需求。
