i am making app that will interact whit MySQL databases, to one table to bee precise. I create main frame, and 3 more, one to show table, one to insert data, and one to delete row using id key. When i start index.py all 3 scripts run, and then main window. I want to user call scripts from menu.
Here is the script:
import wx
from main import SetupGrid
from insert import InsertData
from delete import DeleteData
class GlavniProzor(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "Editor Tabele Setup", size = (800,600))
self.createMenu()
self.CenterOnScreen()
self.Show()
def createMenu(self):
''' Traka menija '''
menubar = wx.MenuBar()
self.SetMenuBar(menubar)
''' Meni Specijalne funkcije '''
menu = wx.Menu()
menubar.Append(menu, '&Specijalne funkcije')
menuitem = wx.MenuItem(menu, wx.ID_ANY, 'Tabela')
#self.Bind(wx.EVT_MENU, self.prikazTabele, menuitem)
menu.AppendItem(menuitem)
menuitem = wx.MenuItem(menu, wx.ID_ANY, 'Unos u tabelu')
# self.Bind(wx.EVT_MENU, self.unosuTabelu, menuitem)
menu.AppendItem(menuitem)
menuitem = wx.MenuItem(menu, wx.ID_ANY, 'Brisanje iz tabele')
# self.Bind(wx.EVT_MENU, self.brisanjeizTabele, menuitem)
menu.AppendItem(menuitem)
menuitem = wx.MenuItem(menu, wx.ID_ANY, 'Izlaz')
# self.Bind(wx.EVT_MENU, self.izlaz, menuitem)
menu.AppendItem(menuitem)
def prikazTabele(self, evt):
dial = SetupGrid(self, -1)
dial.CenterOnParent()
dial.Show()
def unosuTabelu(self, evt):
dial = InsertData(self, -1)
dial.CenterOnParent()
dial.Show()
def brisanjeizTabele(self, evt):
dial = DeleteData(self, -1)
dial.CenterOnParent()
dial.Show()
def izlaz(self, evt):
exit()
app = wx.App(0)
frame = GlavniProzor(None)
app.MainLoop()
This is main.py scrip, which show table
#! /usr/bin/env python
import wx, MySQLdb, wx.lib.intctrl
import wx.grid as gridlib
ID_SETUP = 1
db = MySQLdb.connect("127.0.0.1", "user", "password", "database")
class SetupGrid(wx.Dialog):
def __init__(self, id, title='Tabela Setup'):
wx.Dialog.__init__(self, id, title, size=(1000, 300))
db = MySQLdb.connect("127.0.0.1", "root", "aaa111bbb", "mysqlsetup")
cursor = db.cursor()
def setupid():
sql = 'SELECT idSetup FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
def setupkomitent():
sql = 'SELECT idKomitent FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
def setupdrzava():
sql = 'SELECT Drzava FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
def setupprg():
sql = 'SELECT Prg FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
def setupprovajder():
sql = 'SELECT Provajder FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
def setupservername():
sql = 'SELECT ServerName FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
def setupdatabasename():
sql = 'SELECT DataBaseName FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
def setupsifarnici():
sql = 'SELECT Sifarnici FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
def setuppromena():
sql = 'SELECT Promena FROM setup'
cursor.execute(sql)
rezltat = cursor.fetchall()
rezultat2 = []
x = 0
for upis in rezltat:
for polje in upis:
users = str(polje)
rezultat2.append(users)
x += 1
return rezultat2
self.idSetup = setupid()
self.idKomitent = setupkomitent()
self.Drzava = setupdrzava()
self.Prg = setupprg()
self.Provajder = setupprovajder()
self.ServerName = setupservername()
self.DataBaseName = setupdatabasename()
self.Sifarnici = setupsifarnici()
self.Promena = setuppromena()
# Define main panel
panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
# Define sizers
# Horizontal sizers
SetupTableSizer = wx.BoxSizer(wx.HORIZONTAL)
BtnSizer = wx.BoxSizer(wx.HORIZONTAL)
# Add species table widget
Setup = wx.grid.Grid(panel, -1, size=(1070, 200))
Setup.CreateGrid(9, 9)
Setup.SetColLabelValue(0, "idSetup")
Setup.SetColLabelValue(1, "idKomitent")
Setup.SetColLabelValue(2, "Drzava")
Setup.SetColLabelValue(3, "Prg")
Setup.SetColLabelValue(4, "Provajder")
Setup.SetColLabelValue(5, "ServerName")
Setup.SetColLabelValue(6, "DataBaseName")
Setup.SetColLabelValue(7, "Sifarnici")
Setup.SetColLabelValue(8, "Promena")
Setup.SetRowLabelSize(0)
for i in range(0, len(self.idSetup)):
Setup.SetCellValue(i, 0, self.idSetup[i])
for i in range(0, len(self.idKomitent)):
Setup.SetCellValue(i, 1, self.idKomitent[i])
for i in range(0, len(self.Drzava)):
Setup.SetCellValue(i, 2, self.Drzava[i])
for i in range(0, len(self.Prg)):
Setup.SetCellValue(i, 3, self.Prg[i])
for i in range(0, len(self.Provajder)):
Setup.SetCellValue(i, 4, self.Provajder[i])
for i in range(0, len(self.ServerName)):
Setup.SetCellValue(i, 5, self.ServerName[i])
for i in range(0, len(self.DataBaseName)):
Setup.SetCellValue(i, 6, self.DataBaseName[i])
for i in range(0, len(self.Sifarnici)):
Setup.SetCellValue(i, 7, self.Sifarnici[i])
for i in range(0, len(self.Promena)):
Setup.SetCellValue(i, 8, self.Promena[i])
Setup.AutoSize()
SetupTableSizer.Add(Setup, wx.ALIGN_CENTER | wx.ALL, 0)
panel.SetSizer(vbox)
self.Centre()
self.Show(True)
app = wx.App()
SetupGrid(None, -1)
app.MainLoop()
This is insert script
import wx
import MySQLdb
db = MySQLdb.connect("127.0.0.1", "user", "password", "database")
cursor = db.cursor()
class InsertData(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)
panel = wx.Panel(self, -1)
panel.SetBackgroundColour('light gray')
#iconFile = "Grocery.ico"
#icon1 = wx.Icon(iconFile, wx.BITMAP_TYPE_ICO)
#self.SetIcon(icon1)
label1 = wx.StaticText(panel, -1, "idKomitent:")
label2 = wx.StaticText(panel, -1, "Drzava:")
label3 = wx.StaticText(panel, -1, "Prg:")
label4 = wx.StaticText(panel, -1, "Provajder:")
label5 = wx.StaticText(panel, -1, "ServerName:")
label6 = wx.StaticText(panel, -1, "DataBaseName:")
label7 = wx.StaticText(panel, -1, "Sifarnici:")
self.idKomitent = wx.TextCtrl(panel, -1, "")
self.Drzava = wx.TextCtrl(panel, -1, "")
self.Prg = wx.TextCtrl(panel, -1, "")
self.Provajder = wx.TextCtrl(panel, -1, "")
self.ServerName = wx.TextCtrl(panel, -1, "")
self.DataBaseName = wx.TextCtrl(panel, -1, "")
self.Sifarnici = wx.TextCtrl(panel, -1, "")
self.calc_btn = wx.Button(panel, -1, 'Insert')
self.calc_btn.Bind(wx.EVT_BUTTON, self.onEnter)
self.close = wx.Button(panel, -1, "Exit")
self.Bind(wx.EVT_BUTTON, self.OnCloseMe)
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
# use gridbagsizer for layout of widgets
sizer = wx.GridBagSizer(vgap=6, hgap=6)
sizer.Add(label1, pos=(0, 0))
sizer.Add(self.idKomitent, pos=(0, 2)) # row 0, column 2
sizer.Add(label2, pos=(1, 0))
sizer.Add(self.Drzava, pos=(1, 2))
sizer.Add(label3, pos=(2, 0))
sizer.Add(self.Prg, pos=(2, 2))
sizer.Add(label4, pos=(3, 0))
sizer.Add(self.Provajder, pos=(3, 2))
sizer.Add(label5, pos=(4, 0))
sizer.Add(self.ServerName, pos=(4, 2))
sizer.Add(label6, pos=(5, 0))
sizer.Add(self.DataBaseName, pos=(5, 2))
sizer.Add(label7, pos=(6, 0))
sizer.Add(self.Sifarnici, pos=(6, 2))
sizer.Add(self.calc_btn, pos=(8, 1))
sizer.Add(self.close, pos=(8, 2))
# use boxsizer to add border around sizer
border = wx.BoxSizer()
border.Add(sizer, 0, wx.ALL, 20)
panel.SetSizerAndFit(border)
self.Fit()
def onEnter(self, event):
# get the values from the input widgets
idKomitent = int(self.idKomitent.GetValue())
Drzava = str(self.Drzava.GetValue())
Prg = str(self.Prg.GetValue())
Provajder = str(self.Provajder.GetValue())
ServerName = str(self.ServerName.GetValue())
DataBaseName = str(self.DataBaseName.GetValue())
Sifarnici = str(self.Sifarnici.GetValue())
db = MySQLdb.connect("127.0.0.1", "user", "password", "database")
cursor = db.cursor()
cursor.execute("INSERT INTO setup (idKomitent, Drzava, Prg, Provajder, ServerName, DataBaseName, Sifarnici) VALUES (%s, %s, %s, %s, %s, %s, %s)", (idKomitent, Drzava, Prg, Provajder, ServerName, DataBaseName, Sifarnici))
cursor.execute("commit")
self.idKomitent.Clear()
self.Drzava.Clear()
self.Prg.Clear()
self.Provajder.Clear()
self.ServerName.Clear()
self.DataBaseName.Clear()
self.Sifarnici.Clear()
cursor.close()
def OnCloseMe(self, event):
self.Close(True)
def OnCloseWindow(self, event):
self.Destroy()
app = wx.App()
frame = InsertData(None, -1, "Tabela MySQL Setup")
frame.Show()
app.MainLoop()
And final delete script
import wx
import MySQLdb
db = MySQLdb.connect("127.0.0.1", "root", "aaa111bbb", "mysqlsetup")
cursor = db.cursor()
class DeleteData(wx.Frame):
def __init__(self):
wx.Frame.__init__(self)
panel = wx.Panel(self, -1)
panel.SetBackgroundColour('light gray')
#iconFile = "Grocery.ico"
#icon1 = wx.Icon(iconFile, wx.BITMAP_TYPE_ICO)
#self.SetIcon(icon1)
label1 = wx.StaticText(panel, -1, "idSetup:")
self.idSetup = wx.TextCtrl(panel, -1, "")
self.calc_btn = wx.Button(panel, -1, 'Delte')
self.calc_btn.Bind(wx.EVT_BUTTON, self.onEnter)
self.close = wx.Button(panel, -1, "Exit")
self.Bind(wx.EVT_BUTTON, self.OnCloseMe)
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
# use gridbagsizer for layout of widgets
sizer = wx.GridBagSizer(vgap=3, hgap=3)
sizer.Add(label1, pos=(0, 0))
sizer.Add(self.idSetup, pos=(0, 2)) # row 0, column 2
sizer.Add(self.calc_btn, pos=(2, 1))
sizer.Add(self.close, pos=(2, 2))
# use boxsizer to add border around sizer
border = wx.BoxSizer()
border.Add(sizer, 0, wx.ALL, 20)
panel.SetSizerAndFit(border)
self.Fit()
def onEnter(self, event):
# get the values from the input widgets
idSetup = int(self.idSetup.GetValue())
db = MySQLdb.connect("127.0.0.1", "user", "password", "database")
cursor = db.cursor()
cursor.execute("DELETE FROM setup WHERE idSetup = '%s'" % (idSetup))
cursor.execute("commit")
self.idSetup.Clear()
cursor.close()
def OnCloseMe(self, event):
self.Close(True)
def OnCloseWindow(self, event):
self.Destroy()
app = wx.App()
frame = DeleteData(None, -1, "Tabela MySQL Setup")
frame.Show()
app.MainLoop()
Where i made mistake??
I think that it might be as simple as adding:
if __name__ == "__main__":
before your app=wx.App() sections
i.e.
if __name__ == "__main__":
app = wx.App(0)
frame = GlavniProzor(None)
app.MainLoop()
Note: using the names ,index,main,insert and delete for your program names is probably a bad idea, they are in danger of being interpreted as keywords if not by python itself by anyone reading the code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With