Scroll Event Ende abfragen
Verfasst: Sonntag 15. April 2007, 13:45
Hallo,
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:
Warum wird das Event "evt_scroll_changed" oder oder "evt_scroll_thumbreleased" nicht gefangen? Kann mir jemand helfen? Wie bekomme ich mit, dass gescrollt worden ist? Ich arbeite auf einem SuSE10.2 System.
Vielen Dank schon mal im voraus,
Piet
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