Ciao a tutti.
Ho una classe dinamica MultiTextEntryDialog che mi serve per la modifica dei campi di un record. Ho la necessità di fargli accettare anche più di 32 campi, ho usato i sizer con le TextCtrl con RICH_style in cascata, solo che questi vanno fuori schermo in verticale.
Con lo screen reader li gestisco fino in fondo, ma un vedente no...
Non appare alcuna barra di scorrimento verticale e non riesco a far scrollare il contenuto della finestra nemmeno provando a gestire un evento con la rotella del mouse.

Qualcuno ha un idea di come adattargli uno scrolling a doc con tanto di sb?
Ho incollato la parte del sorgente in oggetto.
Grazie per qualsiasi aiuto.
Adriano

class MultiTextEntryDialog(wx.Dialog):
  pos=   wx.DefaultPosition, size=wx.DefaultSize,
  style=wx.DEFAULT_DIALOG_STYLE|wx.SB_VERTICAL, name=wx.DialogNameStr,
  input_labels=[], defaults=[], message=''):
 wx.Dialog.__init__(self, parent=parent, id=id, title=title, pos=pos,
   size=size, style=style, name=name)
 s = wx.BoxSizer(wx.VERTICAL)
 if message:
  s.Add(wx.StaticText(self, -1, message), 0, wx.ALL, 10)
  s.Add(wx.StaticLine(self), 0, wx.EXPAND|wx.ALL, 5)
 s1 = wx.FlexGridSizer(len(input_labels), 2)
 s1.AddGrowableCol(1, 1)
 self.text_ctrls = []
 for n, lab in enumerate(input_labels):
  t = wx.TextCtrl(self, style=wx.TE_RICH2)
  self.text_ctrls.append(t)
  try:
   t.SetValue(defaults[n].strip(" \n"))
   t.SetInsertionPoint(0)
  except IndexError:
   pass
s1.Add(wx.StaticText(self, -1, lab+":"), 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
  s1.Add(t, 0, wx.EXPAND|wx.ALL, 5)
 s.Add(s1, 0, wx.EXPAND|wx.ALL, 5)
 s.Add(self.CreateButtonSizer(wx.OK|wx.CANCEL), 0, wx.ALL|wx.EXPAND, 5)
 btn=self.FindWindowById(wx.ID_CANCEL)
 btn.SetLabel("Annulla")
 self.SetSizer(s)
 if size == wx.DefaultSize:
  s.Fit(self)
 else:
  self.SetSize(size)

 self.Centre()

 self.scroll = wx.ScrolledWindow(self, -1)
self.scroll.SetScrollbars(1, 1, self.GetVirtualSize()[0], self.GetVirtualSize()[1])
 self.Bind(wx.EVT_MOUSEWHEEL, self.OnScrollPage)


def OnScrollPage(self, event):
 r=self.GetWheelRotation()
 if r < 0:
  self.scroll.Scroll(1, 1)
 else:
  self.scroll.Scroll(self.GetVirtualSize()[0], self.GetVirtualSize()[1])


_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a