如何将数据库添加到wxpython的wx.grid?
how to add the database to wx.grid of wxpython?
我试过通过以下方式添加数据库。
import sys
import sqlite3
# --- constructor
# --------------
self.m_grid1 = wx.grid.Grid( self.m_panel6, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )
# Grid
self.m_grid1.CreateGrid( 6, 3 )
通过按钮调用
def Database_View( self, event ):
db = sqlite3.connect("database/Save.db")
cur = db.cursor()
cur.execute("SELECT id,login,password FROM datosurl")
data = cur.fetchall()
if data:
for row, form in enumerate(data):
for column, item in enumerate(form):
#self.m_grid1.SetCellValue(column, row, form[0])
print("row: "+str(row)+" - column - "+str(column)+" - "+str(form[0]))
print("row :"+str(row)+" - column - "+str(column)+" - "+ str(form[1]))
print("row :"+str(row)+" - column - "+str(column)+" - "+ str(form[2]))
column +=1
row +=1
db.close()
如您所见,我一直在尝试打印,但目标是以下代码:
self.m_grid1.SetCellValue(column, row, form[0])
在 form1 中,我有以下内容
form('id','apple','english') #and continuously
我知道我在重复句子方面不及格,你能帮帮我吗?我停了
我已经给你定义了对不对,因为我的数据超过了定义值
self.m_grid1.CreateGrid( 6, 3 )
这是一种方法,有几种方法,具体取决于数据库的构造和访问方式。
请参阅 onLoadTable
加载列标签和数据。
import wx
import sqlite3 as sqlite
import wx.grid as gridlib
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,"",size=(900,400))
panel = wx.Panel(self, -1)
self.db = db
self.cursor = self.db.conn.cursor()
result = self.cursor.execute("create table if not exists Data (myindex INTEGER PRIMARY KEY AUTOINCREMENT, id int, login text, password text)");
vbox = wx.BoxSizer(wx.VERTICAL)
self.grid = wx.grid.Grid(panel)
rows = self.cursor.execute('SELECT Count(*) FROM Data')
val = rows.fetchone()
self.db_exists = val[0]
self.grid.CreateGrid(15,20)
self.grid.Scroll(0,0)
self.LoadBtn = wx.Button(panel, -1, "Commit/Load")
self.Bind(wx.EVT_BUTTON, self.onLoad, self.LoadBtn)
vbox.Add(self.LoadBtn)
vbox.Add(self.grid)
panel.SetSizer(vbox)
panel.Fit()
def onLoad(self, event):
if self.db_exists == 0:
for i in range(10):
id = i
login = 'login'+str(i)
password = 'pass'+str(i)
self.cursor.execute("INSERT INTO Data VALUES (NULL,?,?,?);",(id, login, password))
self.db.conn.commit()
self.onLoadTable()
def onLoadTable(self):
self.grid.ClearGrid()
metadata = self.cursor.execute('SELECT * from Data')
labels = []
for i in metadata.description:
labels.append(i[0])
labels = labels[1:]
for i in range(len(labels)):
self.grid.SetColLabelValue(i, labels[i])
logins = self.cursor.execute('SELECT * from Data')
for row in logins:
row_num = row[0]
cells = row[1:]
for i in range(0,len(cells)):
if cells[i] != None and cells[i] != "null":
self.grid.SetCellValue(row_num-1, i, str(cells[i]))
self.Show()
self.db.conn.commit()
class GetDatabase():
def __init__(self):
self.conn = sqlite.connect("logins.db")
if __name__ == "__main__":
db=GetDatabase()
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()
我试过通过以下方式添加数据库。
import sys
import sqlite3
# --- constructor
# --------------
self.m_grid1 = wx.grid.Grid( self.m_panel6, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )
# Grid
self.m_grid1.CreateGrid( 6, 3 )
通过按钮调用
def Database_View( self, event ):
db = sqlite3.connect("database/Save.db")
cur = db.cursor()
cur.execute("SELECT id,login,password FROM datosurl")
data = cur.fetchall()
if data:
for row, form in enumerate(data):
for column, item in enumerate(form):
#self.m_grid1.SetCellValue(column, row, form[0])
print("row: "+str(row)+" - column - "+str(column)+" - "+str(form[0]))
print("row :"+str(row)+" - column - "+str(column)+" - "+ str(form[1]))
print("row :"+str(row)+" - column - "+str(column)+" - "+ str(form[2]))
column +=1
row +=1
db.close()
如您所见,我一直在尝试打印,但目标是以下代码:
self.m_grid1.SetCellValue(column, row, form[0])
在 form1 中,我有以下内容
form('id','apple','english') #and continuously
我知道我在重复句子方面不及格,你能帮帮我吗?我停了
我已经给你定义了对不对,因为我的数据超过了定义值
self.m_grid1.CreateGrid( 6, 3 )
这是一种方法,有几种方法,具体取决于数据库的构造和访问方式。
请参阅 onLoadTable
加载列标签和数据。
import wx
import sqlite3 as sqlite
import wx.grid as gridlib
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,"",size=(900,400))
panel = wx.Panel(self, -1)
self.db = db
self.cursor = self.db.conn.cursor()
result = self.cursor.execute("create table if not exists Data (myindex INTEGER PRIMARY KEY AUTOINCREMENT, id int, login text, password text)");
vbox = wx.BoxSizer(wx.VERTICAL)
self.grid = wx.grid.Grid(panel)
rows = self.cursor.execute('SELECT Count(*) FROM Data')
val = rows.fetchone()
self.db_exists = val[0]
self.grid.CreateGrid(15,20)
self.grid.Scroll(0,0)
self.LoadBtn = wx.Button(panel, -1, "Commit/Load")
self.Bind(wx.EVT_BUTTON, self.onLoad, self.LoadBtn)
vbox.Add(self.LoadBtn)
vbox.Add(self.grid)
panel.SetSizer(vbox)
panel.Fit()
def onLoad(self, event):
if self.db_exists == 0:
for i in range(10):
id = i
login = 'login'+str(i)
password = 'pass'+str(i)
self.cursor.execute("INSERT INTO Data VALUES (NULL,?,?,?);",(id, login, password))
self.db.conn.commit()
self.onLoadTable()
def onLoadTable(self):
self.grid.ClearGrid()
metadata = self.cursor.execute('SELECT * from Data')
labels = []
for i in metadata.description:
labels.append(i[0])
labels = labels[1:]
for i in range(len(labels)):
self.grid.SetColLabelValue(i, labels[i])
logins = self.cursor.execute('SELECT * from Data')
for row in logins:
row_num = row[0]
cells = row[1:]
for i in range(0,len(cells)):
if cells[i] != None and cells[i] != "null":
self.grid.SetCellValue(row_num-1, i, str(cells[i]))
self.Show()
self.db.conn.commit()
class GetDatabase():
def __init__(self):
self.conn = sqlite.connect("logins.db")
if __name__ == "__main__":
db=GetDatabase()
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()