This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#--------------------------------------------------------------------- | |
#!/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() |