2015. 2. 13. 06:10
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#! -*- coding: utf-8 -*-

import wx
import wx.grid
import gettext
import os
import sqlite3
import datetime

cwd=os.path.abspath(os.curdir)

class MyFrame(wx.Frame):
  def __init__(self,*args,**kwds):
    kwds["style"]=wx.DEFAULT_FRAME_STYLE
    wx.Frame.__init__(self,*args,**kwds)
    self.frame_1_menubar=wx.MenuBar()
    wxglade_tmp_menu=wx.Menu()
    wxglade_tmp_menu.Append(1,_("Create sqlite3 DataBase"),"",wx.ITEM_NORMAL)
    self.frame_1_menubar.Append(wxglade_tmp_menu,_("DataBase Configuration"))
   
    wxglade_tmp_menu=wx.Menu()
    wxglade_tmp_menu.Append(2,_("Message"),"",wx.ITEM_NORMAL)
    self.frame_1_menubar.Append(wxglade_tmp_menu,_("About"))

    self.SetMenuBar(self.frame_1_menubar)
    self.__set_properties()
    self.__do_layout()
    self.Bind(wx.EVT_MENU, self.open_dialog, id=1)
    self.Bind(wx.EVT_MENU, self.open_dialog1,id=2)

  def __set_properties(self):
    self.SetTitle(_("Sqlite3 Creator"))
    self.SetSize((555,444))
    self.SetBackgroundColour(wx.Colour(255,255,255))
 
  def __do_layout(self):
    sizer_1=wx.BoxSizer(wx.VERTICAL)
    self.SetSizer(sizer_1)
    self.Layout()

  def open_dialog(self,event):
    MyDialog1(self).Show()

  def open_dialog1(self,event):
    wx.MessageBox("This App s made for you and for all developpers who use sqlite3")


class MyDialog1(wx.Dialog):
  def __init__(self,*args,**kwds):
    kwds["style"]=wx.DEFAULT_DIALOG_STYLE
    wx.Dialog.__init__(self,*args,**kwds)
    self.label_27=wx.StaticText(self,-1,_(" Create Your Data Tables :"))
    self.label_25=wx.StaticText(self,-1,_(" File/Data/Table"))
    self.txtFileName=wx.TextCtrl(self, -1,"")
    self.txtDataName=wx.TextCtrl(self,-1,"")
    self.txtDataTable=wx.TextCtrl(self,-1,"")
    self.grid_1=wx.grid.Grid(self,-1,size=(1,1))
    self.bnt_add=wx.Button(self, -1,_("Add Column"))
    self.bnt_remove=wx.Button(self,-1,_("Remove Column"))
    self.bnt_create=wx.Button(self,-1,_("Create DataBase"))
    self.bnt_reset=wx.Button(self,-1,_("Reset Grid"))
    self.txtDataFileOutput=wx.TextCtrl(self,-1,"",style=wx.TE_READONLY)

    self.__set_properties()
    self.__do_layout()

    self.Bind(wx.EVT_BUTTON,self.cl_add_col,self.bnt_add)
    self.Bind(wx.EVT_BUTTON,self.clk_remove_col, self.bnt_remove)
    self.Bind(wx.EVT_BUTTON,self.clk_Create_db,self.bnt_create)
    self.Bind(wx.EVT_BUTTON,self.clk_reset_grid,self.bnt_reset)

  def __set_properties(self):
    self.SetTitle(_("DataBase Creator"))
    self.SetSize((555,444))
    self.txtFileName.SetMinSize((100,27))
    self.txtDataName.SetMinSize((100,27))
    self.txtDataTable.SetMinSize((100,27))
    self.grid_1.CreateGrid(1,2)
    self.grid_1.SetColLabelValue(0,_("Name"))
    self.grid_1.SetColSize(0,200)
    self.grid_1.SetColLabelValue(1,_("Type"))
    self.grid_1.SetColSize(1,200)
    self.bnt_add.SetMinSize((200,29))
    self.bnt_remove.SetMinSize((200,29))
    self.bnt_create.SetMinSize((200,29))
    self.bnt_reset.SetMinSize((200,29))
    self.txtDataFileOutput.SetMinSize((400,30))

  def __do_layout(self):
    sizer_7=wx.BoxSizer(wx.VERTICAL)
    grid_sizer_10=wx.GridSizer(2,2,0,0)
    grid_sizer_8=wx.GridSizer(1,4,0,0)
    sizer_7.Add(self.label_27,0,0,0)
    grid_sizer_8.Add(self.label_25,0,wx.ALIGN_CENTER_VERTICAL,0)
    grid_sizer_8.Add(self.txtFileName,0,wx.ALIGN_CENTER_VERTICAL,0)
    grid_sizer_8.Add(self.txtDataName,0,wx.ALIGN_CENTER_VERTICAL,0)
    grid_sizer_8.Add(self.txtDataTable,0,wx.ALIGN_CENTER_VERTICAL,0)
    sizer_7.Add(grid_sizer_8,1,wx.EXPAND,0)
    sizer_7.Add(self.grid_1,1,wx.EXPAND,0)
    grid_sizer_10.Add(self.bnt_add,0,wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL,0)
    grid_sizer_10.Add(self.bnt_remove,0,wx.ALIGN_CENTER_VERTICAL,0)
    grid_sizer_10.Add(self.bnt_create,0,wx.ALIGN_RIGHT,0)
    grid_sizer_10.Add(self.bnt_reset,0,0,0)
    sizer_7.Add(grid_sizer_10,1,wx.EXPAND,0)
    sizer_7.Add(self.txtDataFileOutput,0,wx.EXPAND,0)
    self.SetSizer(sizer_7)
    self.Layout()

  def cl_add_col(self,event):
    self.grid_1.AppendRows(1)
    event.Skip()

  def clk_remove_col(self,event):
    try:
      lst=self.grid_1.GetSelectedRows()[0]
      self.grid_1.DeletRows(lst,1)
      event.Skip()
    except IndexError:
      wx.MessageBox("You did not select ant row to delete")

  def clk_Create_db(self,event):
    try:
      DataColumnsList=[]
      DataTypeList=[]
      DataString=[]
      DataTableName=str(self.txtDataTable.Value)
      ConnectionString=cwd+"/"+(self.txtFileName.Value + "/"+self.txtDataName.Value+".db")
      RowNum=self.grid_1.GetNumberRows()
 
      for i in range(0,RowNum):
        DataColumnsList.append(str(self.grid_1.GetCellValue(i,0)))
        DataTypeList.append(str(self.grid_1.GetCellValue(i,1)))

      for i in range(len(DataColumnsList)):
        DataString.append(DataColumnsList[i]+" "+DataTypeList[i])

      elem=",".join(DataString)
      CreateQuery=("""CREATE TABLE """+DataTableName+"""(%s)"""%elem)

      if not os.path.isfile("/python/CreationLog.txt"):
        f=open("CreationLog.txt","w")

      with open("/python/CreationLog.txt","wr+")as NewLog:
        OldLog=NewLog.read()
        NewLog.seek(0)
        NewLog.write(OldLog+ "\nCreated on "+str(datetime.date.isoformat(datetime.datetime.now()))+" in '"+ConnectionString+"' ,Used Query : "+CreateQuery+"\n")
      if not os.path.exists(self.txtFileName.Value):
        os.makedirs(self.txtFileName.Value)
      else:
        wx.MessageBox("The Folder Already Exists, but you can add to it data tables")

      cnn=sqlite3.connect(ConnectionString)
      cursor=cnn.cursor()
      cursor.execute(CreateQuery)
      cnn.close()

      self.txtDataFileOutput.Value=("A Data File Named "+self.txtDataName.Value+".db was created in "+self.txtFileName.Value)
    except OSError:
      wx.MessageBox("The Grid Is Empty!")
    event.Skip()

  def clk_reset_grid(self,event):
    r=self.grid_1.GetNumberRows()

    for i in range(0,r):
      self.grid_1.DelteRows(1,i)

    for c in range(0,2):
      self.grid_1.SetCellValue(0,c,"")

    self.txtFileName.Value=""
    self.txtDataName.Value=""
    self.txtDataTable.Value=""
    self.txtDataFileOutput.Value=""
    event.Skip()

if __name__=="__main__":
  gettext.install("app")
  app=wx.PySimpleApp(0)
  wx.InitAllImageHandlers()
  frame_1=MyFrame(None,wx.ID_ANY,"")
  app.SetTopWindow(frame_1)
  frame_1.Show()
  app.MainLoop()



'Python' 카테고리의 다른 글

inMemoryZip.py  (0) 2015.02.14
phonebook.py  (0) 2015.02.14
keyEncryption.py  (0) 2015.02.13
pngCanvas.py  (0) 2015.02.13
socket_server.py / socket_client.py  (0) 2015.02.12
Posted by af334