ich möchte gerne mitbekommen, wann ein User das Scrollen eines Elementes beendet hat. Dazu habe ich den Quelltext einer ScrolledPanel-Python-Demo abgewandelt.
Hier mein modifizierter Quelltext:
Code: Alles auswählen
import wx
import wx.lib.scrolledpanel as scrolled
text = "one two buckle my shoe three four shut the door five six pick up sticks seven eight lay them straight nine ten big fat hen"
class TestPanel(scrolled.ScrolledPanel):
def __init__(self,parent):
scrolled.ScrolledPanel.__init__(self,parent,-1)
vbox = wx.BoxSizer(wx.VERTICAL)
words = text.split()
panel1 = scrolled.ScrolledPanel(self, -1, size=(140, 300),
style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER, name="panel1" )
fgs1 = wx.FlexGridSizer(cols=2, vgap=4, hgap=4)
for word in words:
label = wx.StaticText(panel1, -1, word+":")
tc = wx.TextCtrl(panel1, -1, word, size=(50,-1))
fgs1.Add(label, flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=10)
fgs1.Add(tc, flag=wx.RIGHT, border=10)
panel1.SetSizer( fgs1 )
panel1.SetAutoLayout(1)
panel1.SetupScrolling()
hbox = wx.BoxSizer(wx.HORIZONTAL)
hbox.Add(panel1, 0, wx.FIXED_MINSIZE)
vbox.Add(hbox, 0)
self.SetSizer(vbox)
self.SetAutoLayout(1)
self.SetupScrolling()
#hier verschiedene Alternativen
self.Bind(wx.EVT_SCROLL_THUMBRELEASE,self.scrollenBeendent,panel1)
self.Bind(wx.EVT_SCROLL_THUMBRELEASE,self.scrollenBeendent)
panel1.Bind(wx.EVT_SCROLL_THUMBRELEASE,self.scrollenBeendent)
#Alternativ wx.EVT_SCROLL_CHANGED geht auch nicht
#self.Bind(wx.EVT_SCROLL_CHANGED,self.scrollenBeendent,panel1)
#self.Bind(wx.EVT_SCROLL_CHANGED,self.scrollenBeendent)
#panel1.Bind(wx.EVT_SCROLL_CHANGED,self.scrollenBeendent)
def scrollenBeendent(self,event):
print "Es wurde gescrollt"
def runTest(frame):
win = TestPanel(frame)
return win
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.DefaultSize, wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.THICK_FRAME | wx.RESIZE_BORDER)
runTest (self)
class DrApp(wx.App):
def OnInit(self):
frame = MyFrame(None, 101, "Test Event Scrollenbeendet abfangen")
frame.Show(True)
self.SetTopWindow(frame)
return True
if __name__ == '__main__':
app = DrApp(0)
app.MainLoop()
Vielen Dank schon mal im voraus,
Piet