Skip to content

Instantly share code, notes, and snippets.

@dbh4ck
Created April 17, 2016 21:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dbh4ck/35a37e32ee1f3cfb754b84ac80fcb3e4 to your computer and use it in GitHub Desktop.
Save dbh4ck/35a37e32ee1f3cfb754b84ac80fcb3e4 to your computer and use it in GitHub Desktop.
wx_Python_SQLite3_DataGride_View
#---------------------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- SQLITE3 GUI DEMO APP -*-
# -*- Python (2.7.11) -*-
# -*- wxPython (2.8) -*-
# -*- Author : DB <dbh4ck@gmail.com> aka <db~@NC> -*-
# -*- GUI wxPython -*-
# -*- coded by db~@NC -*-
# -*- Mar., 2016 -*-
#---------------------------------------------------------------------
import os
import sys
from wx.lib import sized_controls
import wx
if "2.8" in wx.version():
import wx.lib.pubsub.setupkwargs
from wx.lib.pubsub import pub
else:
from wx.lib.pubsub import pub
import wx.lib.agw.hyperlink as hl
import wx, wx.html
import wx.lib.scrolledpanel
import wx.grid as grid
from ctypes import *
gdi32= WinDLL("gdi32.dll")
font_path = os.path.abspath("Lato-Medium.ttf")
print font_path
print gdi32.AddFontResourceA(font_path)
class LoginDialog(wx.Dialog):
def __init__(SELF):
face = "ProggySquareTT"
prog_font = wx.TheFontList.FindOrCreateFont(18, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, face)
prog_font2 = wx.TheFontList.FindOrCreateFont(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
prog_label = wx.TheFontList.FindOrCreateFont(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
prog_btn = wx.TheFontList.FindOrCreateFont(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, face)
"""Constructor"""
wx.Dialog.__init__(SELF, None, title="Admin Panel",size=(320,250))
SELF.SetBackgroundColour('#F2EDD8')
SELF.gb = wx.StaticBox(SELF, -1, 'Admin Panel:' , pos =(5,3),size=(300,200))
SELF.gb.SetForegroundColour(wx.BLACK)
SELF.gb.SetFont(prog_font2)
SELF.gb_sizer = wx.StaticBoxSizer(SELF.gb, wx.VERTICAL)
# user info
user_sizer = wx.BoxSizer(wx.HORIZONTAL)
user_lbl = wx.StaticText(SELF, label="Username:")
user_sizer.Add(user_lbl, 0, wx.ALL|wx.LEFT, 10)
user_lbl.SetFont(prog_label)
SELF.user = wx.TextCtrl(SELF)
user_sizer.Add(SELF.user, 0, wx.ALL, 5)
SELF.gb_sizer.Add(user_lbl,0,wx.ALL|wx.CENTER,5)
# pass info
p_sizer = wx.BoxSizer(wx.HORIZONTAL)
p_lbl = wx.StaticText(SELF, label="Password:")
p_sizer.Add(p_lbl, 0, wx.ALL|wx.LEFT, 10)
p_lbl.SetFont(prog_label)
SELF.password = wx.TextCtrl(SELF, style=wx.TE_PASSWORD|wx.TE_PROCESS_ENTER)
p_sizer.Add(SELF.password, 0, wx.ALL, 5)
SELF.gb_sizer.Add(p_lbl,0,wx.ALL|wx.CENTER,5)
main_sizer = wx.BoxSizer(wx.VERTICAL)
main_sizer.Add(user_sizer, 0, wx.TOP, 40)
main_sizer.Add(p_sizer, 0, wx.TOP, 15)
btn = wx.Button(SELF, label="Login", style=wx.BORDER_NONE)
btn.Bind(wx.EVT_BUTTON, SELF.onLogin)
btn.SetFont(prog_btn)
btn.SetBackgroundColour('#5D4C46')
btn.SetForegroundColour(wx.WHITE)
main_sizer.Add(btn, 0, wx.ALL|wx.CENTER, 2)
cancel = wx.Button(SELF, wx.ID_CANCEL, style=wx.BORDER_NONE)
cancel.SetFont(prog_btn)
cancel.SetBackgroundColour('#5D4C46')
cancel.SetForegroundColour(wx.WHITE)
main_sizer.Add(cancel, 0, wx.ALL|wx.CENTER, 5)
SELF.SetSizer(main_sizer)
SELF.Center()
#----------------------------------------------------------------------
def onLogin(SELF, event):
"""
Check credentials and login
"""
stupid_user = "admin"
user_name = SELF.user.GetValue()
stupid_password = "password"
user_password = SELF.password.GetValue()
if user_password == stupid_password and user_name == stupid_user:
print "You are now Logged in!"
pub.sendMessage("frameListener", message="show")
SELF.Destroy()
else:
SELF.Close()
print "Username or password is Incorrect!"
########################################################################
############################### // Main Frame // ######################################
class MyFrame(wx.Frame):
def __init__(SELF):
wx.Frame.__init__(SELF, None,-1,"Welcome To Sqlite3 GUI",size=(970,770),style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
SELF.SetBackgroundColour(wx.WHITE)
pub.subscribe(SELF.myListener, "frameListener")
SELF.initialize()
dlg = LoginDialog()
res = dlg.ShowModal()
if res == wx.ID_CANCEL:
dlg.Destroy()
SELF.Close()
def myListener(SELF, message, arg2=None):
SELF.Show()
SELF.Center()
def initialize(SELF):
face = "ProggySquareTT"
prog_font = wx.TheFontList.FindOrCreateFont(18, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, face)
prog_font2 = wx.TheFontList.FindOrCreateFont(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
prog_label = wx.TheFontList.FindOrCreateFont(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
prog_btn = wx.TheFontList.FindOrCreateFont(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, face)
def_font = wx.Font(12, wx.MODERN, wx.NORMAL, wx.NORMAL)
panelsarj = wx.Panel(SELF,-1,pos =(0,2),size=(1250,42))
panelsarj.SetBackgroundColour('#5D4C46')
font_lbl= wx.Font(10, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
sarjfont_lbl= wx.Font(15, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
sarj_sizer = wx.BoxSizer(wx.HORIZONTAL)
sarj_lbl = wx.StaticText(panelsarj,label="Welcome To SQLITE3 GUI wxPython")
sarj_lbl.SetForegroundColour(wx.WHITE)
sarj_lbl.SetFont(prog_font)
sarj_sizer.Add(sarj_lbl,0,wx.CENTER|wx.TOP,5)
panel1 = wx.Panel(SELF,-1,pos =(8,60),size=(235,130))
panel2 = wx.Panel(SELF,-1,pos =(8,205),size=(235,235))
panel3 = wx.Panel(SELF,-1,pos =(8,480),size=(245,250))
#panel4 = wx.Panel(SELF,-1,pos =(270,340),size=(245,95))
panel5 = wx.Panel(SELF,-1,pos =(290,60),size=(230,125))
panel6 = wx.Panel(SELF,-1,pos =(290,210),size=(230,230))
mainPanel = wx.lib.scrolledpanel.ScrolledPanel(SELF,-1, style=wx.SIMPLE_BORDER, pos =(590,70),size=(360,360))
mainPanel.SetupScrolling()
panel1.SetBackgroundColour('#44B3C2')
panel2.SetBackgroundColour('#44B3C2')
panel3.SetBackgroundColour('#44B3C2')
#panel4.SetBackgroundColour('#F2EDD8')
panel5.SetBackgroundColour('#44B3C2')
panel6.SetBackgroundColour('#44B3C2')
mainPanel.SetBackgroundColour('#FFFFFF')
SELF.dblbl = wx.StaticBox(SELF, -1, 'Create DataBase:' , pos =(5,50),size=(240,140))
font_dblbl= wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl.SetForegroundColour(wx.BLACK)
SELF.dblbl.SetFont(prog_font2)
SELF.dblbl2 = wx.StaticBox(SELF, -1, 'Create Table:' , pos =(5,205),size=(240,240))
font_dblbl2= wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl2.SetForegroundColour(wx.BLACK)
SELF.dblbl2.SetFont(prog_font2)
SELF.dblbl3 = wx.StaticBox(SELF, -1, 'INSERT Data:' , pos =(5,465),size=(252,270))
font_dblbl3 = wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl3.SetForegroundColour(wx.BLACK)
SELF.dblbl3.SetFont(prog_font2)
#SELF.dblbl4 = wx.StaticBox(SELF, -1, 'Show Data:' , pos =(270,340),size=(252,100))
#font_dblbl4= wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
#SELF.dblbl4.SetForegroundColour(wx.BLUE)
#SELF.dblbl4.SetFont(prog_font2)
SELF.dblbl5 = wx.StaticBox(SELF, -1, 'Delete Data:' , pos =(290,50),size=(240,140))
font_dblbl5 = wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl5.SetForegroundColour(wx.BLACK)
SELF.dblbl5.SetFont(prog_font2)
SELF.dblbl6 = wx.StaticBox(SELF, -1, 'Update Data:' , pos =(290,205),size=(240,240))
font_dblbl6 = wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl6.SetForegroundColour(wx.BLACK)
SELF.dblbl6.SetFont(prog_font2)
SELF.dblbl7 = wx.StaticBox(SELF, -1, 'Records:' , pos =(580,50),size=(380,390))
font_dblbl7 = wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl7.SetForegroundColour(wx.BLACK)
SELF.dblbl7.SetFont(prog_font2)
SELF.dblbl_sizer = wx.StaticBoxSizer(SELF.dblbl, wx.VERTICAL)
SELF.dblbl2_sizer = wx.StaticBoxSizer(SELF.dblbl2, wx.VERTICAL)
SELF.dblbl3_sizer = wx.StaticBoxSizer(SELF.dblbl3, wx.VERTICAL)
#SELF.dblbl4_sizer = wx.StaticBoxSizer(SELF.dblbl4, wx.VERTICAL)
SELF.dblbl5_sizer = wx.StaticBoxSizer(SELF.dblbl5, wx.VERTICAL)
SELF.dblbl6_sizer = wx.StaticBoxSizer(SELF.dblbl6, wx.VERTICAL)
SELF.dblbl7_sizer = wx.StaticBoxSizer(SELF.dblbl7, wx.VERTICAL)
db_sizer = wx.BoxSizer(wx.HORIZONTAL)
db_lbl = wx.StaticText(panel1,label= "Database Name:")
db_lbl.SetForegroundColour(wx.WHITE)
db_lbl.SetFont(prog_label)
db_sizer.Add(db_lbl,0,wx.LEFT|wx.TOP,5)
SELF.dblbl_sizer.Add(db_lbl,0,wx.ALL|wx.CENTER,5)
SELF.db = wx.TextCtrl(panel1,style=wx.TE_CENTER)
SELF.db.SetForegroundColour(wx.BLUE)
db_sizer.Add(SELF.db,0,wx.ALL,5)
SELF.dblbl_sizer.Add(SELF.db,0,wx.ALL|wx.CENTER,5)
#font_1= wx.Font(11, wx.DECORATIVE, wx.NORMAL, wx.BOLD)
#SELF.db.SetFont(font_1)
button_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button = wx.Button(panel1,-1,label="Create DB", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnDbCreateButtonClick,SELF.button)
font_button= wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.button.SetFont(prog_btn)
SELF.button.SetBackgroundColour('#5D4C46')
SELF.button.SetForegroundColour(wx.WHITE)
button_sizer.Add(SELF.button,0,wx.LEFT,107)
SELF.dblbl_sizer.Add(SELF.button,0,wx.ALL|wx.CENTER,5)
tb_sizer = wx.BoxSizer(wx.HORIZONTAL)
tb_lbl = wx.StaticText(panel2,label="Table Name:")
tb_lbl.SetForegroundColour(wx.WHITE)
tb_lbl.SetFont(prog_label)
tb_sizer.Add(tb_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(tb_lbl,0,wx.ALL|wx.CENTER,5)
SELF.tb = wx.TextCtrl(panel2,style=wx.TE_CENTER)
SELF.tb.SetForegroundColour(wx.BLUE)
tb_sizer.Add(SELF.tb,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.tb,0,wx.ALL|wx.CENTER,5)
#SELF.tb.SetFont(font_1)
col1_sizer = wx.BoxSizer(wx.HORIZONTAL)
col1_lbl = wx.StaticText(panel2,label="1st Column:")
col1_lbl.SetForegroundColour(wx.WHITE)
col1_lbl.SetFont(prog_label)
col1_sizer.Add(col1_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col1_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col1 = wx.TextCtrl(panel2,style=wx.TE_CENTER)
SELF.col1.SetForegroundColour(wx.BLUE)
col1_sizer.Add(SELF.col1,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col1,0,wx.ALL|wx.CENTER,5)
#SELF.col1.SetFont(font_1)
col2_sizer = wx.BoxSizer(wx.HORIZONTAL)
col2_lbl = wx.StaticText(panel2,label="2nd Column:")
col2_lbl.SetForegroundColour(wx.WHITE)
col2_lbl.SetFont(prog_label)
col2_sizer.Add(col2_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col2_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col2 = wx.TextCtrl(panel2,style=wx.TE_CENTER)
SELF.col2.SetForegroundColour(wx.BLUE)
col2_sizer.Add(SELF.col2,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col2,0,wx.ALL|wx.CENTER,5)
#SELF.col2.SetFont(font_1)
col3_sizer = wx.BoxSizer(wx.HORIZONTAL)
col3_lbl = wx.StaticText(panel2,label="3rd Column:")
col3_lbl.SetForegroundColour(wx.WHITE)
col3_lbl.SetFont(prog_label)
col3_sizer.Add(col3_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col3_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col3 = wx.TextCtrl(panel2,style=wx.TE_CENTER)
SELF.col3.SetForegroundColour(wx.BLUE)
col3_sizer.Add(SELF.col3,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col3,0,wx.ALL|wx.CENTER,5)
#SELF.col3.SetFont(font_1)
button2_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button2 = wx.Button(panel2,-1,label="Create TB", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnTableCreateButtonClick,SELF.button2)
font_button2 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.button2.SetFont(prog_btn)
SELF.button2.SetBackgroundColour('#5D4C46')
SELF.button2.SetForegroundColour(wx.WHITE)
button2_sizer.Add(SELF.button2,0,wx.LEFT,105)
SELF.dblbl_sizer.Add(SELF.button2,0,wx.ALL|wx.CENTER,5)
insert1_sizer = wx.BoxSizer(wx.HORIZONTAL)
insert1_lbl = wx.StaticText(panel3,label="Insert Col. 1:")
insert1_lbl.SetForegroundColour(wx.WHITE)
insert1_lbl.SetFont(prog_label)
insert1_sizer.Add(insert1_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl3_sizer.Add(insert1_lbl,0,wx.ALL|wx.CENTER,5)
SELF.insert1 = wx.TextCtrl(panel3,style=wx.TE_CENTER)
SELF.insert1.SetForegroundColour(wx.BLUE)
insert1_sizer.Add(SELF.insert1,0,wx.ALL,15)
SELF.dblbl3_sizer.Add(SELF.insert1,0,wx.ALL|wx.CENTER,5)
#SELF.insert1.SetFont(font_1)
note1_sizer = wx.BoxSizer(wx.HORIZONTAL)
note1_lbl = wx.StaticText(panel3, label= "[ Must be Text ]")
note1_lbl.SetForegroundColour(wx.WHITE)
note1_lbl.SetFont(prog_label)
note1_sizer.Add(note1_lbl,0,wx.TOP|wx.RIGHT,-177)
SELF.dblbl3_sizer.Add(note1_lbl,0,wx.ALL|wx.CENTER,5)
insert2_sizer = wx.BoxSizer(wx.HORIZONTAL)
insert2_lbl = wx.StaticText(panel3,label="Insert Col. 2:")
insert2_lbl.SetForegroundColour(wx.WHITE)
insert2_lbl.SetFont(prog_label)
insert2_sizer.Add(insert2_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl3_sizer.Add(insert2_lbl,0,wx.ALL|wx.CENTER,5)
SELF.insert2 = wx.TextCtrl(panel3,style=wx.TE_CENTER)
SELF.insert2.SetForegroundColour(wx.BLUE)
insert2_sizer.Add(SELF.insert2,0,wx.ALL,15)
SELF.dblbl3_sizer.Add(SELF.insert2,0,wx.ALL|wx.CENTER,5)
#SELF.insert2.SetFont(font_1)
note2_sizer = wx.BoxSizer(wx.HORIZONTAL)
note2_lbl = wx.StaticText(panel3, label= "[ Must be Text ]")
note2_lbl.SetForegroundColour(wx.WHITE)
note2_lbl.SetFont(prog_label)
note2_sizer.Add(note2_lbl,0,wx.TOP|wx.RIGHT,-128)
SELF.dblbl3_sizer.Add(note2_lbl,0,wx.ALL|wx.CENTER,5)
insert3_sizer = wx.BoxSizer(wx.HORIZONTAL)
insert3_lbl = wx.StaticText(panel3,label="Insert Col. 3:")
insert3_lbl.SetForegroundColour(wx.WHITE)
insert3_lbl.SetFont(prog_label)
insert3_sizer.Add(insert3_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl3_sizer.Add(insert3_lbl,0,wx.ALL|wx.CENTER,5)
SELF.insert3 = wx.TextCtrl(panel3,style=wx.TE_CENTER)
SELF.insert3.SetForegroundColour(wx.BLUE)
insert3_sizer.Add(SELF.insert3,0,wx.ALL,15)
SELF.dblbl3_sizer.Add(SELF.insert3,0,wx.ALL|wx.CENTER,5)
#SELF.insert3.SetFont(font_1)
note3_sizer = wx.BoxSizer(wx.HORIZONTAL)
note3_lbl = wx.StaticText(panel3, label= "[ Must be Text ]")
note3_lbl.SetForegroundColour(wx.WHITE)
note3_lbl.SetFont(prog_label)
note3_sizer.Add(note3_lbl,0,wx.TOP|wx.RIGHT,-78)
SELF.dblbl3_sizer.Add(note3_lbl,0,wx.ALL|wx.CENTER,5)
button0_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button0 = wx.Button(panel3,-1,label="INSERT Data", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnInsertButtonClick,SELF.button0)
font_button0 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.button0.SetFont(prog_btn)
SELF.button0.SetBackgroundColour('#5D4C46')
SELF.button0.SetForegroundColour(wx.WHITE)
button0_sizer.Add(SELF.button0,0,wx.LEFT,112)
SELF.dblbl3_sizer.Add(SELF.button0,0,wx.ALL|wx.CENTER,5)
#button3_sizer = wx.BoxSizer(wx.HORIZONTAL)
#SELF.button3 = wx.Button(panel4,-1,label="Show Table Data")
#SELF.Bind(wx.EVT_BUTTON,SELF.OnShowButtonClick,SELF.button3)
#font_button3 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
#SELF.button3.SetFont(font_button)
#SELF.button3.SetForegroundColour(wx.RED)
#button3_sizer.Add(SELF.button3,0,wx.LEFT,50)
del_sizer = wx.BoxSizer(wx.HORIZONTAL)
del_lbl = wx.StaticText(panel5,label= "Enter Column Id:")
del_lbl.SetForegroundColour(wx.WHITE)
del_lbl.SetFont(prog_label)
del_sizer.Add(del_lbl,0,wx.LEFT|wx.TOP,5)
SELF.dblbl_sizer.Add(del_lbl,0,wx.ALL|wx.CENTER,5)
SELF.delete = wx.TextCtrl(panel5,style=wx.TE_CENTER)
SELF.delete.SetForegroundColour(wx.BLUE)
del_sizer.Add(SELF.delete,0,wx.ALL,3)
SELF.dblbl3_sizer.Add(SELF.delete,0,wx.ALL|wx.CENTER,5)
SELF.delete.SetFont(prog_label)
button4_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button4 = wx.Button(panel5,-1,label="DELETE Data", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnDeleteButtonClick,SELF.button4)
font_button3 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.button4.SetFont(prog_btn)
SELF.button4.SetBackgroundColour('#5D4C46')
SELF.button4.SetForegroundColour(wx.WHITE)
button4_sizer.Add(SELF.button4,0,wx.LEFT,105)
column_sizer = wx.BoxSizer(wx.HORIZONTAL)
column_lbl = wx.StaticText(panel6,label="Column ID:")
column_lbl.SetForegroundColour(wx.WHITE)
column_lbl.SetFont(prog_label)
column_sizer.Add(column_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(column_lbl,0,wx.ALL|wx.CENTER,5)
SELF.column = wx.TextCtrl(panel6,style=wx.TE_CENTER)
SELF.column.SetForegroundColour(wx.BLUE)
column_sizer.Add(SELF.column,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.column,0,wx.ALL|wx.CENTER,5)
#SELF.column.SetFont(font_1)
col11_sizer = wx.BoxSizer(wx.HORIZONTAL)
col11_lbl = wx.StaticText(panel6,label="1st Column:")
col11_lbl.SetForegroundColour(wx.WHITE)
col11_lbl.SetFont(prog_label)
col11_sizer.Add(col11_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col11_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col11 = wx.TextCtrl(panel6,style=wx.TE_CENTER)
SELF.col11.SetForegroundColour(wx.BLUE)
col11_sizer.Add(SELF.col11,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col11,0,wx.ALL|wx.CENTER,5)
#SELF.col11.SetFont(font_1)
col22_sizer = wx.BoxSizer(wx.HORIZONTAL)
col22_lbl = wx.StaticText(panel6,label="2nd Column:")
col22_lbl.SetForegroundColour(wx.WHITE)
col22_lbl.SetFont(prog_label)
col22_sizer.Add(col22_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col22_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col22 = wx.TextCtrl(panel6,style=wx.TE_CENTER)
SELF.col22.SetForegroundColour(wx.BLUE)
col22_sizer.Add(SELF.col22,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col22,0,wx.ALL|wx.CENTER,5)
#SELF.col22.SetFont(font_1)
col33_sizer = wx.BoxSizer(wx.HORIZONTAL)
col33_lbl = wx.StaticText(panel6,label="3rd Column:")
col33_lbl.SetForegroundColour(wx.WHITE)
col33_lbl.SetFont(prog_label)
col33_sizer.Add(col33_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col33_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col33 = wx.TextCtrl(panel6,style=wx.TE_CENTER)
SELF.col33.SetForegroundColour(wx.BLUE)
col33_sizer.Add(SELF.col33,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col33,0,wx.ALL|wx.CENTER,5)
#SELF.col33.SetFont(font_1)
button5_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button5 = wx.Button(panel6,-1,label="UPDATE Data", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnUpdateButtonClick,SELF.button5)
font_button5 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD )
SELF.button5.SetFont(prog_btn)
SELF.button5.SetBackgroundColour('#5D4C46')
SELF.button5.SetForegroundColour(wx.WHITE)
button5_sizer.Add(SELF.button5,0,wx.LEFT,100)
#SELF.btn_logout = wx.Button(SELF,-1,label="Logout", style=wx.BORDER_NONE)
#SELF.Bind(wx.EVT_BUTTON,SELF.OnLogoutButtonClick,SELF.btn_logout)
grid_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.grid = wx.grid.Grid(mainPanel,-1)
SELF.grid.CreateGrid(50,3)
grid_sizer.Add(SELF.grid,0,wx.ALL,5)
SELF.dblbl7_sizer.Add(SELF.grid,0,wx.ALL|wx.CENTER,5)
main_sizer= wx.BoxSizer(wx.VERTICAL)
main_sizer.Add(sarj_sizer,0,wx.TOP|wx.CENTER,3)
main_sizer.Add(db_sizer,0,wx.TOP,5)
main_sizer.Add(button_sizer,0,wx.TOP,2)
main_sizer.Add(tb_sizer,0,wx.TOP,-80)
main_sizer.Add(col1_sizer,0,wx.TOP,-40)
main_sizer.Add(col2_sizer,0,wx.TOP,-20)
main_sizer.Add(col3_sizer,0,wx.TOP,-18)
main_sizer.Add(button2_sizer,0,wx.TOP,2)
main_sizer.Add(insert1_sizer,0,wx.TOP,-210)
main_sizer.Add(note1_sizer,0,wx.LEFT|wx.TOP,10)
main_sizer.Add(insert2_sizer,0,wx.TOP,-160)
main_sizer.Add(note2_sizer,0,wx.LEFT|wx.TOP,10)
main_sizer.Add(insert3_sizer,0,wx.TOP,-110)
main_sizer.Add(note3_sizer,0,wx.LEFT|wx.TOP,10)
main_sizer.Add(button0_sizer,0,wx.TOP,-40)
#main_sizer.Add(button3_sizer,0,wx.TOP,-210)
main_sizer.Add(del_sizer,0,wx.TOP,-205)
main_sizer.Add(button4_sizer,0,wx.TOP,-165)
main_sizer.Add(column_sizer,0,wx.TOP,-225)
main_sizer.Add(col11_sizer,0,wx.TOP,-190)
main_sizer.Add(col22_sizer,0,wx.TOP,-155)
main_sizer.Add(col33_sizer,0,wx.TOP,-120)
main_sizer.Add(button5_sizer,0,wx.TOP,-70)
main_sizer.Add(grid_sizer,0,wx.TOP,-245)
SELF.SetSizer(main_sizer)
mainPanel.SetSizer(grid_sizer)
#SELF.Show(True)
SELF.Center()
def OnDbCreateButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue() + ".db"))
print "\nDataBase Created!\n"
def OnTableCreateButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
cur.execute("CREATE TABLE %s (ID INTEGER PRIMARY KEY AUTOINCREMENT, %s TEXT, %s TEXT, %s TEXT)"%(SELF.tb.GetValue(), SELF.col1.GetValue(), SELF.col2.GetValue(), SELF.col3.GetValue()))
print "Table Created!\n"
def OnShowButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
# Fetch Columns Name From Table
meta = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
columns = []
for i in meta.description:
columns.append(i[0])
columns = columns[1:]
for i in range(len(columns)):
SELF.grid.SetColLabelValue(i, columns[i])
# Populate Grid with The Values From Database
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
for i in range(len(cells)):
if cells[i] != None and cells[i] != "null":
SELF.grid.SetCellValue(row_num, i, str(cells[i]))
#rows = cur.fetchall()
#for row in rows:
#print row
#print "\nId = ", row[0]
#print "%s = "%(SELF.col1.GetValue()), row[1]
#print "%s = "%(SELF.col2.GetValue()), row[2]
#print "%s = "%(SELF.col3.GetValue()), row[3]
def OnInsertButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
cur.execute("INSERT INTO %s VALUES(NULL,'%s', '%s', '%s')" %(SELF.tb.GetValue(), SELF.insert1.GetValue(), SELF.insert2.GetValue(), SELF.insert3.GetValue()))
print "Data Inserted!"
# Fetch Columns Name From Table
meta = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
columns = []
for i in meta.description:
columns.append(i[0])
columns = columns[1:]
for i in range(len(columns)):
SELF.grid.SetColLabelValue(i, columns[i])
# Populate Grid with The Values From Database
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
for i in range(len(cells)):
if cells[i] != None and cells[i] != "null":
SELF.grid.SetCellValue(row_num, i, str(cells[i]))
def OnDeleteButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
cur.execute("DELETE FROM %s WHERE ID=%s" %(SELF.tb.GetValue(), SELF.delete.GetValue()))
#user = cur.fetchone()[0]
#SELF.refreshGrid()
# Fetch Columns Name From Table
SELF.grid.ClearGrid()
SELF.grid.BeginBatch()
delmsg = wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED
msg = wx.grid.GridTableMessage(
SELF.grid.GetTable(),
delmsg,
)
SELF.grid.ProcessTableMessage(msg)
#msg = wx.grid.GridTableMessage(SELF.grid.GetTable(), wxGRIDTABLE_REQUEST_VIEW_GET_VALUES)
SELF.grid.ProcessTableMessage(msg)
SELF.grid.EndBatch()
# Fetch Columns Name From Table
meta = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
columns = []
for i in meta.description:
columns.append(i[0])
columns = columns[1:]
for i in range(len(columns)):
SELF.grid.SetColLabelValue(i, columns[i])
# Populate Grid with The Values From Database
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
for i in range(len(cells)):
if cells[i] != None and cells[i] != "null":
SELF.grid.SetCellValue(row_num, i, str(cells[i]))
print "\nData Deleted!\n"
def refreshGrid(SELF):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
#SELF.grid.ClearGrid()
SELF.grid.BeginBatch()
current, new, delmsg, addmsg = (len(cells), SELF.grid.GetNumberRows(), wxGRIDTABLE_NOTIFY_ROWS_DELETED, wxGRIDTABLE_NOTIFY_ROWS_APPENDED)
if new < current:
msg = wx.grid.GridTableMessage(
SELF.grid.GetTable(),
delmsg,
new, # position
current-new,
)
SELF.grid.ProcessTableMessage(msg)
elif new > current:
msg = wx.grid.GridTableMessage(
SELF.grid.GetTable(),
addmsg,
new-current
)
SELF.grid.ProcessTableMessage(msg)
msg = wx.grid.GridTableMessage(SELF.grid.GetTable(), wxGRIDTABLE_REQUEST_VIEW_GET_VALUES)
SELF.grid.ProcessTableMessage(msg)
SELF.grid.EndBatch()
def OnUpdateButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
cur.execute("SELECT * FROM %s where Id = %s" %(SELF.tb.GetValue(), SELF.column.GetValue()))
user = cur.fetchone()[0]
cur.execute("UPDATE %s SET %s = '%s' where Id = %s" %(SELF.tb.GetValue(), SELF.col1.GetValue(), SELF.col11.GetValue(), SELF.column.GetValue()))
cur.execute("UPDATE %s SET %s = '%s' where Id = %s" %(SELF.tb.GetValue(), SELF.col2.GetValue(), SELF.col22.GetValue(), SELF.column.GetValue()))
cur.execute("UPDATE %s SET %s = '%s' where Id = %s" %(SELF.tb.GetValue(), SELF.col3.GetValue(), SELF.col33.GetValue(), SELF.column.GetValue()))
# Fetch Columns Name From Table
meta = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
columns = []
for i in meta.description:
columns.append(i[0])
columns = columns[1:]
for i in range(len(columns)):
SELF.grid.SetColLabelValue(i, columns[i])
# Populate Grid with The Values From Database
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
for i in range(len(cells)):
if cells[i] != None and cells[i] != "null":
SELF.grid.SetCellValue(row_num, i, str(cells[i]))
print "\nData Updated!\n"
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
frame.Show()
app.MainLoop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment