Home / Programmazione / Python / wxPython Grid
Mattepuffo

wxPython Grid

wxPython Grid

Oggi vediamo come usare il componente Grid in Python e wxPython.

Questo componente è la "classica" tabella, diviso in righe e colonne.

Vediamone un primo esempio:

import wx
import wx.grid as gridlib

class GridForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="Grid")
        panel = wx.Panel(self)
 
        g = gridlib.Grid(panel)
        g.CreateGrid(6, 6)
 
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(g, 1, wx.EXPAND)
        panel.SetSizer(sizer)
 
if __name__ == "__main__":
    app = wx.PySimpleApp()
    frame = GridForm().Show()
    app.MainLoop()

Prima importiamo le librerie che ci interessano.

Inizializiamo il Frame, aggiungiamo un Panel e sotto creiamo la nostra Grid.

Al metodo CreateGrid dobbiamo passargli il numero di righe e colonne.

Sotto avviamo la app.

Qua sotto invece un esempio più concreto:

import wx
import wx.grid as gridlib
 
class GridForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="Grid", size=(650,320))
        panel = wx.Panel(self)
 
        g = gridlib.Grid(panel)
        g.CreateGrid(15, 15)
 
        g.SetCellValue(0,0, "CIAO")
        g.SetCellFont(0, 0, wx.Font(12, wx.ROMAN, wx.ITALIC, wx.NORMAL))
 
        g.SetCellValue(1,1, "CELLA ROSSA")
        g.SetCellTextColour(1, 1, wx.RED)
 
        g.SetCellBackgroundColour(2, 2, wx.CYAN)
 
        g.SetCellValue(3, 3, "SOLA LETTURA")
        g.SetReadOnly(3, 3, True)
 
        g.SetCellEditor(5, 0, gridlib.GridCellNumberEditor(1,1000))
        g.SetCellValue(5, 0, "123456")
        g.SetCellEditor(6, 0, gridlib.GridCellFloatEditor())
        g.SetCellValue(6, 0, "123.34")
        g.SetCellEditor(7, 0, gridlib.GridCellNumberEditor())
 
        g.SetCellSize(11, 1, 3, 3)
        g.SetCellAlignment(11, 1, wx.ALIGN_CENTRE, wx.ALIGN_CENTRE)
        g.SetCellValue(11, 1, "This cell is set to span 3 rows and 3 columns")
 
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(g)
        panel.SetSizer(sizer)
 
if __name__ == "__main__":
    app = wx.PySimpleApp()
    frame = GridForm()
    frame.Show()
    app.MainLoop()

Abbiamo aggiunto un pò di carne al fuoco, come ad esempio i colori, o celle in sola lettura.

Come al solito Python ha un codice molto compatto, e in poche righe di codice riusciamo a personalizzare la nostra Grid.

La prossima volta vedremo creare una Grid dinamica a seconda dei dati che arrivano in formato JSON.

Ciao!