I would appreciate any and all assistance possible - thanks in advance
I was able to find an example of a GridSizer and start hacking it.I was able to insert a combobox (will need 3 more) but the text alongside it should be "Name1" instead its "Name" which is for the textbox below (so I swapped them but thats not the correct way) can someone explain why? and how to fix?
I will be needing at least 3 testboxes (all of which will only take numeric entries so I will need to put validation in)
How to put this panel in a specific location?
I'm also going to put another button to do the selection again so I want to re-input. Can anybody advise on best structure?
the code is below
import wx
import easygui
import pyExcelerator
import xlrd
import MySQLdb
db = MySQLdb.connect(user="root", passwd="",
db="automate-cisss")
cursor = db.cursor()
cursor.execute("""SELECT DISTINCT r.`Runtype` FROM runtype r;""")
runtypes = [item[0] for item in cursor.fetchall()]
#print runtypes
#easygui.msgbox(runtypes)
print runtypes
db = MySQLdb.connect(user="root", passwd="",
db="automate-cisss")
cursor = db.cursor()
cursor.execute("""SELECT DISTINCT e.`Environment Name` FROM environments e;""")
envs = [item[0] for item in cursor.fetchall()]
print envs
#easygui.msgbox(envs)
db = MySQLdb.connect(user="root", passwd="",
db="automate-cisss")
cursor = db.cursor()
cursor.execute("""SELECT DISTINCT a.`AUT` FROM `application under test` a;""")
AUT = [item[0] for item in cursor.fetchall()]
print AUT
wb = xlrd.open_workbook('C:\Data\CISSS\Resources\UserIDPassword.xls')
sh = wb.sheet_by_name(u'Sheet1')
authors = [sh.cell(rowx=0,colx=1).value, sh.cell(rowx=1,colx=1).value ]
#book = pyExcelerator.parse_xls("C:\Data\CISSS\Resources\UserIDPassword.xls")
#data = book[0][1]
#envs = [sh.cell(rowx=0,colx=1).value, sh.cell(rowx=1,colx=1).value ]
class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, title='My Form')
# Add a panel so it looks correct on all platforms
self.panel = wx.Panel(self, wx.ID_ANY)
bmp = wx.ArtProvider.GetBitmap(wx.ART_INFORMATION, wx.ART_OTHER, (16, 16))
titleIco = wx.StaticBitmap(self.panel, wx.ID_ANY, bmp)
title = wx.StaticText(self.panel, wx.ID_ANY, 'My Title')
lblSize = (50, -1)
bmp = wx.ArtProvider.GetBitmap(wx.ART_TIP, wx.ART_OTHER, (16, 16))
inputOneIco1 = wx.StaticBitmap(self.panel, wx.ID_ANY, bmp)
labelOne1 = wx.StaticText(self.panel, wx.ID_ANY, 'Name1')
#inputTxtOne1 = wx.TextCtrl(self.panel, wx.ID_ANY,'')
cbAUT = wx.ComboBox(self.panel, -1, pos=(50, 70), size=(150, -1),
choices=AUT, style=wx.CB_READONLY)
#choices=[cursor.fetchone(),cursor.fetchone()], style=wx.CB_READONLY)
#choices=["one","two","three"], style=wx.CB_READONLY)
cbAUT.Bind(wx.EVT_COMBOBOX, self.OnSelect)
bmp = wx.ArtProvider.GetBitmap(wx.ART_TIP, wx.ART_OTHER, (16, 16))
inputOneIco = wx.StaticBitmap(self.panel, wx.ID_ANY, bmp)
labelOne = wx.StaticText(self.panel, wx.ID_ANY, 'Name')
inputTxtOne = wx.TextCtrl(self.panel, wx.ID_ANY,'')
inputTwoIco = wx.StaticBitmap(self.panel, wx.ID_ANY, bmp)
labelTwo = wx.StaticText(self.panel, wx.ID_ANY, 'Address')
inputTxtTwo = wx.TextCtrl(self.panel, wx.ID_ANY,'')
inputThreeIco = wx.StaticBitmap(self.panel, wx.ID_ANY, bmp)
labelThree = wx.StaticText(self.panel, wx.ID_ANY, 'Email')
inputTxtThree = wx.TextCtrl(self.panel, wx.ID_ANY, '')
inputFourIco = wx.StaticBitmap(self.panel, wx.ID_ANY, bmp)
labelFour = wx.StaticText(self.panel, wx.ID_ANY, 'Phone')
inputTxtFour = wx.TextCtrl(self.panel, wx.ID_ANY, '')
okBtn = wx.Button(self.panel, wx.ID_ANY, 'OK')
cancelBtn = wx.Button(self.panel, wx.ID_ANY, 'Cancel')
self.Bind(wx.EVT_BUTTON, self.onOK, okBtn)
self.Bind(wx.EVT_BUTTON, self.onCancel, cancelBtn)
topSizer = wx.BoxSizer(wx.VERTICAL)
titleSizer = wx.BoxSizer(wx.HORIZONTAL)
gridSizer = wx.GridSizer(rows=4, cols=2, hgap=5, vgap=5)
inputOneSizer1 = wx.BoxSizer(wx.HORIZONTAL)
inputOneSizer = wx.BoxSizer(wx.HORIZONTAL)
inputTwoSizer = wx.BoxSizer(wx.HORIZONTAL)
inputThreeSizer = wx.BoxSizer(wx.HORIZONTAL)
inputFourSizer = wx.BoxSizer(wx.HORIZONTAL)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
titleSizer.Add(titleIco, 0, wx.ALL, 5)
titleSizer.Add(title, 0, wx.ALL, 5)
# each input sizer will contain 3 items
# A spacer (proportion=1),
# A bitmap (proportion=0),
# and a label (proportion=0)
inputOneSizer1.Add((20,20), proportion=1) # this is a spacer
inputOneSizer1.Add(inputOneIco, 0, wx.ALL, 5)
inputOneSizer1.Add(labelOne, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
inputOneSizer.Add((20,20), proportion=1) # this is a spacer
inputOneSizer.Add(inputOneIco, 0, wx.ALL, 5)
inputOneSizer.Add(labelOne1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
inputTwoSizer.Add((20,20), 1, wx.EXPAND) # this is a spacer
inputTwoSizer.Add(inputTwoIco, 0, wx.ALL, 5)
inputTwoSizer.Add(labelTwo, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
inputThreeSizer.Add((20,20), 1, wx.EXPAND) # this is a spacer
inputThreeSizer.Add(inputThreeIco, 0, wx.ALL, 5)
inputThreeSizer.Add(labelThree, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
inputFourSizer.Add((20,20), 1, wx.EXPAND) # this is a spacer
inputFourSizer.Add(inputFourIco, 0, wx.ALL, 5)
inputFourSizer.Add(labelFour, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
# Add the 3-item sizer to the gridsizer and
# Right align the labels and icons
gridSizer.Add(inputOneSizer, 0, wx.ALIGN_RIGHT)
# Set the TextCtrl to expand on resize
gridSizer.Add(cbAUT,0,wx.EXPAND)
#gridSizer.Add(inputTxtOne1, 0, wx.EXPAND)
gridSizer.Add(inputOneSizer1, 0, wx.ALIGN_RIGHT)
gridSizer.Add(inputTxtOne, 0, wx.EXPAND)
gridSizer.Add(inputTwoSizer, 0, wx.ALIGN_RIGHT)
gridSizer.Add(inputTxtTwo, 0, wx.EXPAND)
gridSizer.Add(inputThreeSizer, 0, wx.ALIGN_RIGHT)
gridSizer.Add(inputTxtThree, 0, wx.EXPAND)
gridSizer.Add(inputFourSizer, 0, wx.ALIGN_RIGHT)
gridSizer.Add(inputTxtFour, 0, wx.EXPAND)
btnSizer.Add(okBtn, 0, wx.ALL, 5)
btnSizer.Add(cancelBtn, 0, wx.ALL, 5)
topSizer.Add(titleSizer, 0, wx.CENTER)
topSizer.Add(wx.StaticLine(self.panel), 0, wx.ALL|wx.EXPAND, 5)
topSizer.Add(gridSizer, 0, wx.ALL|wx.EXPAND, 5) topSizer.Add(wx.StaticLine(self.panel), 0, wx.ALL|wx.EXPAND, 5)
topSizer.Add(btnSizer, 0, wx.ALL|wx.CENTER, 5)
# SetSizeHints(minW, minH, maxW, maxH)
self.SetSizeHints(250,300,500,400)
self.panel.SetSizer(topSizer)
topSizer.Fit(self)
# Do something
print 'onOK handler'
def onCancel(self, event):
self.closeProgram()
def closeProgram(self):
self.Close()
def OnSelect(self, event):
win = event.GetEventObject() # call this if you want to know which box was clicked
for ix, item in enumerate(self.cbs):
if win == item:
break
item = event.GetSelection()
print "You selected item %s in combobox number %s" % (item,ix)
mld = "You selected '"
for cb in self.cbs:
v1 = cb.GetValue()
if v1:
mld = v1.join((mld,"', "))
print mld[:-2]
#easygui.msgbox(mld[:-2])
# Run the program
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyForm().Show()
app.MainLoop()