Ich habe auf einem Panel ein Grid. Diesem Grid kann ich Zeilen / Spalten hinzufügen oder wegnehmen. Solange ich das Frame nicht in der Größe verändere, werden automatisch die Scrollbars für das Grid angezeigt.
Warum werden die Scrollbars nach einem EVT_SIZE nicht mehr angezeigt?
App.py
Code: Alles auswählen
#!/usr/bin/env python
#Boa:App:BoaApp
import wx
import Frame1
modules ={'Frame1': [1, 'Main frame of Application', u'Frame1.py']}
class BoaApp(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
self.main = Frame1.create(None)
self.main.Show()
self.SetTopWindow(self.main)
return True
def main():
application = BoaApp(0)
application.MainLoop()
if __name__ == '__main__':
main()
Code: Alles auswählen
#Boa:Frame:Frame1
import wx
import wx.grid
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1BUTTON2, wxID_FRAME1BUTTON3, wxID_FRAME1BUTTON4, wxID_FRAME1GRID1,
wxID_FRAME1PANEL1, wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT2, wxID_FRAME1STATICTEXT3, wxID_FRAME1STATICTEXT4,
wxID_FRAME1STATICTEXT5, wxID_FRAME1STATICTEXT6,
] = [wx.NewId() for _init_ctrls in range(13)]
class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt, pos=wx.Point(426, 413), size=wx.Size(659, 423),
style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
self.SetClientSize(wx.Size(651, 396))
self.Bind(wx.EVT_SIZE, self.OnFrame1Size)
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self, pos=wx.Point(0, 0), size=wx.Size(651,
396), style=wx.TAB_TRAVERSAL)
self.panel1.Bind(wx.EVT_SIZE, self.OnPanel1Size)
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'ROW -', name='button1', parent=self.panel1,
pos=wx.Point(20, 80), size=wx.Size(75, 23), style=0)
self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button, id=wxID_FRAME1BUTTON1)
self.button2 = wx.Button(id=wxID_FRAME1BUTTON2, label=u'ROW +', name='button2', parent=self.panel1,
pos=wx.Point(20, 270), size=wx.Size(75, 23), style=0)
self.button2.Bind(wx.EVT_BUTTON, self.OnButton2Button, id=wxID_FRAME1BUTTON2)
self.button3 = wx.Button(id=wxID_FRAME1BUTTON3, label=u'COL -', name='button3', parent=self.panel1,
pos=wx.Point(190, 20), size=wx.Size(75, 23), style=0)
self.button3.Bind(wx.EVT_BUTTON, self.OnButton3Button, id=wxID_FRAME1BUTTON3)
self.button4 = wx.Button(id=wxID_FRAME1BUTTON4, label=u'COL +', name='button4', parent=self.panel1,
pos=wx.Point(500, 20), size=wx.Size(75, 23), style=0)
self.button4.Bind(wx.EVT_BUTTON, self.OnButton4Button, id=wxID_FRAME1BUTTON4)
self.grid1 = wx.grid.Grid(id=wxID_FRAME1GRID1, name='grid1', parent=self.panel1, pos=wx.Point(110, 50),
size=wx.Size(520, 330), style=0)
self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnGrid1GridCellLeftClick)
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1, label=u'Rows', name='staticText1',
parent=self.panel1, pos=wx.Point(20, 10), size=wx.Size(26, 13), style=0)
self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2, label=u'', name='staticText2', parent=self.panel1,
pos=wx.Point(60, 10), size=wx.Size(0, 13), style=0)
self.staticText3 = wx.StaticText(id=wxID_FRAME1STATICTEXT3, label=u'Cols', name='staticText3',
parent=self.panel1, pos=wx.Point(20, 30), size=wx.Size(20, 13), style=0)
self.staticText4 = wx.StaticText(id=wxID_FRAME1STATICTEXT4, label=u'', name='staticText4', parent=self.panel1,
pos=wx.Point(60, 30), size=wx.Size(0, 13), style=0)
self.staticText5 = wx.StaticText(id=wxID_FRAME1STATICTEXT5, label=u'', name='staticText5', parent=self.panel1,
pos=wx.Point(110, 10), size=wx.Size(0, 13), style=0)
self.staticText5.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL,False, u'Tahoma'))
self.staticText5.SetForegroundColour(wx.Colour(255, 0, 0))
self.staticText6 = wx.StaticText(id=wxID_FRAME1STATICTEXT6, label=u'', name='staticText6', parent=self.panel1,
pos=wx.Point(110, 30), size=wx.Size(0, 13), style=0)
self.staticText6.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL,False, u'Tahoma'))
self.staticText6.SetForegroundColour(wx.Colour(255, 0, 0))
def __init__(self, parent):
self.RowCount=0
self.ColCount=0
self.RowPos=0
self.ColPos=0
self._init_ctrls(parent)
self.grid1.CreateGrid(2,2)
self.updateGridCount()
def updateGridCount(self):
self.RowCount=self.grid1.GetNumberRows()
self.ColCount=self.grid1.GetNumberCols()
self.staticText2.SetLabel(str(self.RowCount))
self.staticText4.SetLabel(str(self.ColCount))
if self.RowCount == 1:
self.button1.Enable(False)
else:
self.button1.Enable(True)
if self.ColCount == 1:
self.button3.Enable(False)
else:
self.button3.Enable(True)
def OnButton1Button(self, event):
self.grid1.DeleteRows(self.RowCount-1,1)
self.updateGridCount()
event.Skip()
def OnButton2Button(self, event):
self.grid1.AppendRows(1)
self.updateGridCount()
event.Skip()
def OnButton3Button(self, event):
self.grid1.DeleteCols(self.ColCount-1,1)
self.updateGridCount()
event.Skip()
def OnButton4Button(self, event):
self.grid1.AppendCols(1)
self.updateGridCount()
event.Skip()
def updateGridPos(self):
self.staticText5.SetLabel(str(self.RowPos))
self.staticText6.SetLabel(str(self.ColPos))
def OnGrid1GridCellLeftClick(self, event):
self.RowPos=self.grid1.GetGridCursorRow()
self.ColPos=self.grid1.GetGridCursorCol()
self.updateGridPos()
event.Skip()
def OnFrame1Size(self, event):
self.panel1.SetSize(self.GetClientSize())
event.Skip()
def OnPanel1Size(self, event):
self.grid1.SetSize(self.panel1.GetClientSize())
event.Skip()
mfg, querdenker