Code: Alles auswählen
#!/usr/bin/env python
"""
usage: ./einmaleins.py <size of table>
"""
import wx
import wx.grid
import sys
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Einmaleins", size=(640, 480))
self.einmaleins = EinmaleinsGrid(self, int(sys.argv[1]))
sizer = wx.GridSizer(0, 0, 0, 0)
sizer.Add(self.einmaleins, flag=wx.ALIGN_CENTRE)
self.SetSizerAndFit(sizer)
class EinmaleinsGrid(wx.grid.Grid):
def __init__(self, parent, size):
wx.grid.Grid.__init__(self, parent, -1)
self.size = size
self.SetTable(EinmaleinsTable(size))
class EinmaleinsTable(wx.grid.PyGridTableBase):
def __init__(self, size):
wx.grid.PyGridTableBase.__init__(self)
self.size = size
def GetNumberRows(self):
return self.size
def GetNumberCols(self):
return self.size
def GetValue(self, row, col):
return (row+1) * (col+1)
def GetColLabelValue(self, col):
return str(col+1)
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = MainFrame()
frame.Show()
app.MainLoop()
Zweitens: Ich haette gerne, dass die Tabelle (wenn sie kleiner ist als das Fenster), im Fenster zentriert wird. Dafuer benutze ich in Zeile 18 wx.ALIGN_CENTRE. Dummerweise wird das Grid dann nicht vergroessert, sobald man das Fenster vergroessert. Benutze ich stattdessen wx.EXPAND, wird das Grid zwar automatisch vergroessert, der Inhalt steht aber immer links oben in der Ecke. Kann ich auf einfache Weise beides haben?