Advertisement
Mirotocivi

for loop and populating wxgrid.

Aug 19th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.63 KB | None | 0 0
  1. import wx
  2. import wx.grid as gridlib
  3. import MySQLdb
  4.  
  5.  
  6. # Class main grid
  7. class MyGrid(gridlib.Grid):
  8.     def __init__(self, parent):
  9.         gridlib.Grid.__init__(self, parent, )
  10.  
  11.         # Connecting to database
  12.         def getData():
  13.             db = MySQLdb.connect("127.0.0.1", "user", "pass", "database")
  14.             cursor = db.cursor()
  15.             query = "SELECT * FROM setup"
  16.             cursor.execute(query)
  17.             data = []
  18.             res = cursor.fetchall()
  19.             for i in res:
  20.                 data.append(i)
  21.             return data
  22.  
  23.         # Column name
  24.         colnames = ["idSetup", "idKomitent", "Drzava", "Prg", "Provajder", "ServerName", "DataBaseName", "Sifarnici",
  25.                     "Promena"]
  26.  
  27.         # Setup
  28.         data = getData()
  29.         self.data = data
  30.         self.colnames = colnames
  31.  
  32.         # Number of rows
  33.         def GetNumberRows(self):
  34.             return int(len(self.data))
  35.  
  36.         # Number of columns
  37.         def GetNumberCols(self):
  38.             return int(len(self.colnames))
  39.  
  40.         # Grid creation
  41.         col = GetNumberCols(self)
  42.         row = GetNumberRows(self)
  43.         self.CreateGrid(row, col)
  44.         self.ChangedValue = False
  45.  
  46.         # Seting up name of columns
  47.         self.SetColLabelValue(0, "idSetup")
  48.         self.SetColLabelValue(1, "idKomitent")
  49.         self.SetColLabelValue(2, "Drzava")
  50.         self.SetColLabelValue(3, "Prg")
  51.         self.SetColLabelValue(4, "Provajder")
  52.         self.SetColLabelValue(5, "ServerName")
  53.         self.SetColLabelValue(6, "DataBaseName")
  54.         self.SetColLabelValue(7, "Sifarnici")
  55.         self.SetColLabelValue(8, "Promena")
  56.  
  57.         # Insertind data
  58.  
  59.         def GetValue(self, row, col):
  60.             return str(self.data[row][1].get(self.GetColLabelValue(col), ""))
  61.  
  62.         def SetValue(self, row, col, value):
  63.             self.data[row][1][self.GetColLabelValue(col)] = value
  64.  
  65.         # Here is where I am stuck
  66.         for i in data:
  67.             for k in i:
  68.                 self.SetCellValue(row, col, '%s')
  69.  
  70.         # Events
  71.         self.Bind(gridlib.EVT_GRID_CELL_CHANGE, self.onCellChange)
  72.         self.Bind(wx.EVT_KEY_DOWN, self.onKeyDown)
  73.  
  74.     def onCellChange(self, evt):
  75.         pass
  76.  
  77.     # Enter key down
  78.     def onKeyDown(self, evt):
  79.         if evt.GetKeyCode() != wx.WXK_RETURN:
  80.             evt.Skip()
  81.             return
  82.  
  83.         if evt.ControlDown():  # the edit control needs this key
  84.             evt.Skip()
  85.             return
  86.  
  87.         self.DisableCellEditControl()
  88.         success = self.MoveCursorRight(evt.ShiftDown())
  89.  
  90.         if not success:
  91.             newRow = self.GetGridCursorRow() + 1
  92.  
  93.             if newRow < self.GetTable().GetNumberRows():
  94.                 self.SetGridCursor(newRow, 0)
  95.                 self.MakeCellVisible(newRow, 0)
  96.             else:
  97.                 newRow = self.GetGridCursorRow() + 1
  98.                 self.appendRow()
  99.                 self.SetGridCursor(newRow, 0)
  100.                 self.MakeCellVisible(newRow, 0)
  101.                 self.ChangedValue = False
  102.  
  103.     def appendRow(self):
  104.         pass
  105.  
  106.  
  107. # Class main window
  108. class GlavniProzor(wx.Frame):
  109.     def __init__(self):
  110.         wx.Frame.__init__(self, parent=None, title="Editor", size=(500, 1000))
  111.         self.Show()
  112.         self.CenterOnScreen()
  113.  
  114.         # Panel
  115.         panel = wx.Panel(self)
  116.         mygrid = MyGrid(panel)
  117.  
  118.         # Box
  119.         sizer = wx.BoxSizer(wx.VERTICAL)
  120.         sizer.Add(mygrid, 1, wx.EXPAND)
  121.         panel.SetSizer(sizer)
  122.         sizer.Fit(self)
  123.  
  124.  
  125. # Run
  126. if __name__ == "__main__":
  127.     app = wx.App()
  128.     frame = GlavniProzor()
  129.     app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement