Durch eigene Experimente habe ich zufällig entdeckt, dass sich das Drehen des Mausrades über die Events Button-4 und Button-5 abfragen lässt. Dachte ich.
Experimentiert hatte ich auf einem Linux-System, dort funktioniert das.
Heute habe ich das gleiche Programm auf einem Windows-System laufen lassen (XP) und siehe da - keine Reaktion auf das Mausrad.
Während unter Linux das Event <Button> die Events <Button-1> bis <Button-5> kennt, wurden dort nur <Button-1> bis <Button-3> erkannt - so findet man es ja auch in der einschlägigen Doku.
Da ich kaum Möglichkeiten habe, auf einem Windowssystem ernsthaft zu testen und zu experimentieren, hier meine Frage:
Gibt es jemanden, der darüber etwas weiß. Also z.B. sind <Button-4/5> auf allen Linux-Systemen gültig oder hängt es evtl. von der Distribution ab? Und gibt es eine andere Möglichkeit, das Mausrad unter Windows abzufragen?
Mousewheel event abfragen
Hi,
vielleicht ist es das, was du meinst?
http://osdir.com/ml/python.tkinter/200 ... cd=6&gl=de
Grüße
rai
vielleicht ist es das, was du meinst?
http://osdir.com/ml/python.tkinter/200 ... cd=6&gl=de
Grüße
rai
Hallo pütone
Hier habe ich etwas zum ausprobieren.
Gruss wuf 
Hier habe ich etwas zum ausprobieren.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import Tkinter
'''
Funktion : Auswertung der Mausrad-Ereignisse unter Linux & Windows.
Test: Der Mauscursor muss sich im Root-Fenster befinden,
durch drehen des Mausrades wird die Zähleranzeige ver-
ändert.
a) Raddrehung nach vorne inkrementiert den Zähler
b) Raddrehung nach hinten dekrementiert den Zähler
'''
#----- MODUL-TEST ------------------------------------------------------------#
if __name__ == '__main__':
#****************
#* FUNKTIONEN *
#****************
def fws_mouse_wheel(event):
""" Rückmeldung der Mausradereignisse """
global counter
# print 'Debug:Mous-Event',event.keycode,event.keysym_num
if event.num == 5 or event.keycode == -120:
#~~ Zähle abwärts
counter -= 1
if event.num == 4 or event.keycode == 120:
#~~ Zähle aufwärts
counter += 1
#~~ Aktualisiere die Zähleranzeige
counter_label['text'] = counter
#**************
#* PROGRAMM *
#**************
#~~ Es wird ein Tk-Hauptfenster generiert und konfiguriert
root = Tkinter.Tk()
root['bg'] = 'steelblue3'
root['width'] = 250
root['height'] = 100
root['cursor'] = 'hand1'
#~~ Binde die Mausradereignisse an das root-Objekt
# (Windows)
root.bind('<MouseWheel>' ,fws_mouse_wheel)
# (Linux)
root.bind('<Button-4>' ,fws_mouse_wheel)
root.bind('<Button-5>' ,fws_mouse_wheel)
root.title('Mouse-Wheel-Test')
counter = 0
#~~ Erstelle die Zähleranzeige
counter_label = Tkinter.Label(root,
text = 0,
font = ('Utopia','16','bold'),
bg = 'khaki',
fg = 'steelblue',
width = 5,
border = 4,
relief = 'ridge',
)
counter_label.place(x=10,y=10)
logo_label = Tkinter.Label(root,
text = 'Powered by Python & Tkinter',
font = ('helvetica','8'),
bg = root['bg'],
fg = 'white',
border = 0,
relief = 'flat',
)
logo_label.place(x=10,y=80)
root.mainloop()

Zuletzt geändert von wuf am Mittwoch 4. Juni 2008, 08:40, insgesamt 1-mal geändert.
Take it easy Mates!