📄 frame1.py
字号:
#Boa:Frame:frame1
import wx
from wx.lib.anchors import LayoutAnchors
import wx.grid
import os
import dbpar
from getpath import getpath
from isql2 import MyError
inipath=getpath()
def create(parent):
return frame1(parent)
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1GRID1, wxID_FRAME1LISTBOX1,
wxID_FRAME1LISTBOX2, wxID_FRAME1TEXTCTRL1, wxID_FRAME1TEXTCTRL2,
] = [wx.NewId() for _init_ctrls in range(7)]
[wxID_FRAME1MENU1ITEMS0, wxID_FRAME1MENU1ITEMS1,
] = [wx.NewId() for _init_coll_menu1_Items in range(2)]
class frame1(wx.Frame):
def _init_coll_menu1_Items(self, parent):
# generated method, don't edit
parent.Append(help='', id=wxID_FRAME1MENU1ITEMS0, kind=wx.ITEM_NORMAL,
text=u'add')
parent.Append(help='', id=wxID_FRAME1MENU1ITEMS1, kind=wx.ITEM_NORMAL,
text=u'delete')
self.Bind(wx.EVT_MENU, self.OnMenu1Items0Menu,
id=wxID_FRAME1MENU1ITEMS0)
self.Bind(wx.EVT_MENU, self.OnMenu1Items1Menu,
id=wxID_FRAME1MENU1ITEMS1)
def _init_utils(self):
# generated method, don't edit
self.menu1 = wx.Menu(title='')
self._init_coll_menu1_Items(self.menu1)
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=wxID_FRAME1, name=u'frame1', parent=prnt,
pos=wx.Point(423, 54), size=wx.Size(536, 633),
style=wx.DEFAULT_FRAME_STYLE | wx.CAPTION,
title=u'isql for Access&SQLite')
self._init_utils()
self.SetClientSize(wx.Size(528, 605))
self.SetAutoLayout(True)
self.Bind(wx.EVT_CLOSE, self.OnFrame1Close)
self.textCtrl1 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL1, name='textCtrl1',
parent=self, pos=wx.Point(8, 360), size=wx.Size(512, 96), style=0,
value='textCtrl1')
self.textCtrl1.SetConstraints(LayoutAnchors(self.textCtrl1, True, False,
True, True))
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'go',
name='button1', parent=self, pos=wx.Point(200, 464),
size=wx.Size(80, 24), style=0)
self.button1.SetConstraints(LayoutAnchors(self.button1, True, False,
False, True))
self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1BUTTON1)
self.textCtrl2 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL2, name='textCtrl2',
parent=self, pos=wx.Point(8, 496), size=wx.Size(512, 104),
style=wx.TE_MULTILINE, value='textCtrl2')
self.textCtrl2.SetConstraints(LayoutAnchors(self.textCtrl2, True, False,
True, True))
self.grid1 = wx.grid.Grid(id=wxID_FRAME1GRID1, name='grid1',
parent=self, pos=wx.Point(152, 104), size=wx.Size(368, 248),
style=0)
self.grid1.SetConstraints(LayoutAnchors(self.grid1, True, True, True,
True))
self.listBox1 = wx.ListBox(choices=[], id=wxID_FRAME1LISTBOX1,
name='listBox1', parent=self, pos=wx.Point(8, 104),
size=wx.Size(131, 248), style=0)
self.listBox1.SetConstraints(LayoutAnchors(self.listBox1, True, True,
False, True))
self.listBox1.Bind(wx.EVT_LISTBOX_DCLICK, self.OnListBox1ListboxDclick,
id=wxID_FRAME1LISTBOX1)
self.listBox2 = wx.ListBox(choices=[], id=wxID_FRAME1LISTBOX2,
name='listBox2', parent=self, pos=wx.Point(8, 8),
size=wx.Size(512, 88), style=0)
self.listBox2.SetConstraints(LayoutAnchors(self.listBox2, True, True,
True, False))
self.listBox2.Bind(wx.EVT_LISTBOX_DCLICK, self.OnListBox2ListboxDclick,
id=wxID_FRAME1LISTBOX2)
self.listBox2.Bind(wx.EVT_RIGHT_DOWN, self.OnListBox2RightDown)
def __init__(self, parent):
self._init_ctrls(parent)
self.grid1.CreateGrid(4,4)
self.dbs=self.loaddbs()
self.textCtrl2.Clear()
def loaddbs(self):
r=[]
try:
f=open(inipath+"\isql.ini","r")
n=f.read()
n=n.split("\n")
for n1 in n:
if n1<>"":
self.listBox2.Append(n1)
r.append(n1)
f.close()
except IOError,e:
print e
print r
return(r)
def OnButton1Button(self, event):
#go
## self.button1.Enable(0)
self.go()
## self.button1.Enable(1)
self.savelogmsg("ready")
def go(self):
cmd=self.textCtrl1.GetValue()
print cmd
try:
r=self.db.execQuery(cmd)
if cmd[:6].lower()=="select":
self.queryToGrid(r,self.grid1)
except MyError,e:
self.savelogmsg(str(e))
def savelogmsg(self,s):
self.textCtrl2.AppendText(s+"\n")
def getFileName(self):
from wxPython.wx import wxFileDialog,wxOPEN,wxID_OK
f=""
wildcard = "sqlite db (*.db)|*.db|" \
"access db (*.mdb)|*.mdb|" \
"All files (*.*)|*.*"
dlg = wxFileDialog(self, "Choose a file", os.getcwd(), "", wildcard,
wxOPEN
)
if dlg.ShowModal() == wxID_OK:
f= dlg.GetPath()
dlg.Destroy()
return(f)
def queryToGrid(self,query,grid):
names=query[0]
r=query[1:]
m1=len(r)
if m1>0:
n1=len(r[0])
m=grid.GetNumberRows()
if m>0:
grid.DeleteRows(numRows =m)
grid.InsertRows(numRows =m1)
n=grid.GetNumberCols()
grid.DeleteCols(numCols =n)
grid.InsertCols(numCols =n1)
for j in range(n1):
for i in range(m1):
grid.SetCellValue(i,j,unicode(r[i][j]))
else:
n1=len(names)
m=grid.GetNumberRows()
if m>0:
grid.DeleteRows(numRows =m)
n=grid.GetNumberCols()
grid.DeleteCols(numCols =n)
grid.InsertCols(numCols =n1)
for j in range(len(names)):
grid.SetColLabelValue(j,names[j])
def addSource(self):
f=self.getFileName()
self.addSource1(f)
def addSource1(self,f):
self.listBox2.Append(f)
self.dbs.append(f)
at=self.listBox2.GetCount()
self.listBox2.SetSelection(at-1)
self.showTables()
def showTables(self):
self.listBox1.Clear()
dbn=self.listBox2.GetString(self.listBox2.GetSelection() )
print "dbn"
print dbn
self.db=dbpar.getdb(dbn)
n=self.db.getTables()
if n!=None:
for n1 in n:
self.listBox1.Append(n1)
def OnListBox1ListboxDclick(self, event):
#open table
s=self.listBox1.GetString(self.listBox1.GetSelection() )
s="select * from "+s
self.textCtrl1.Clear()
self.textCtrl1.AppendText(s)
self.go()
def OnListBox2ListboxDclick(self, event):
#open database
self.showTables()
event.Skip()
def OnMenu1Items0Menu(self, event):
#add data source
print "add source"
self.addSource()
pass
def OnMenu1Items1Menu(self, event):
#delete data source
s=self.listBox2.GetString(self.listBox2.GetSelection())
self.listBox2.Delete(self.listBox2.GetSelection() )
self.dbs.remove(s)
def OnListBox2RightDown(self, event):
self.PopupMenu(self.menu1, event.GetPosition())
def OnFrame1Close(self, event):
f=open(inipath+"\isql.ini","w")
for d in self.dbs:
f.write(d+"\n")
f.close()
self.Destroy()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -