Seite 1 von 1

Zwei fragen zur Maus

Verfasst: Freitag 29. Mai 2009, 17:26
von krisi12345
Frage nr. 1:
Wie kann man abfragen wo die Maus gerade ist?
Frage nr. 2:
Wie kann man abfragen ob die Maus auf einem Objekt ist(in meinem Fall im Canvas "Feld") und dann Klickt?

Verfasst: Freitag 29. Mai 2009, 18:31
von wuf
Hallo krisi12345

Abfragen wo die Maus momentan steht ist schwierig. Auf welchem Objekt sie sich befindet kann mit Programmierung ermittelt werden. Wenn du aber die Mausaktivität durch deren Ereignisse abfängst sieht es wie folgt aus:

a):

Code: Alles auswählen

import Tkinter as tk

def button_press(event):

    print 'Linke Maustaste gedrueckt'
    print "screen-x %d, screen-y %d" % (event.x_root, event.y_root)
    print "app-win-x %d, app-win-y %d" % (event.x, event.y)
    print

def mouse_motion(event):

    print 'Maus in Bewegung'
    print "screen-x %d, screen-y %d" % (event.x_root, event.y_root)
    print "app-win-x %d, app-win-y %d" % (event.x, event.y)
    print


app_win = tk.Tk()

app_win.bind('<Button-1>', button_press)
app_win.bind('<Motion>', mouse_motion)

app_win.mainloop()
b):

Code: Alles auswählen

import Tkinter as tk

def button_press(event):

    print 'Linke Maustaste gedrueckt'
    print "screen-x %d, screen-y %d" % (event.x_root, event.y_root)
    print "app-win-x %d, app-win-y %d" % (event.x, event.y)
    print

def mouse_motion(event):

    print 'Maus in Bewegung'
    print "screen-x %d, screen-y %d" % (event.x_root, event.y_root)
    print "app-win-x %d, app-win-y %d" % (event.x, event.y)
    print

def mouse_enter(event):

    canvas.config(cursor='hand1')

def mouse_leave(event):

    canvas.config(cursor='')

#~~ Erzeuge Hauptfenster
app_win = tk.Tk()
app_win.config(bg='steelblue')

#~~ Erzeuge eine Canvas-Flaeche
canvas = tk.Canvas(app_win, bg='yellow', relief='raised', bd=2,
    highlightthickness=0)
canvas.pack(padx=10, pady=10)

#~~ Erzeuge ein Canvas-Objekt (Rechteck)
canvas.create_rectangle(20, 20, 120, 120, outline='darkgreen',
    fill='darkgreen', stipple='gray50', tags='rechteck')

#~~ Binde Mausereignisse an das Canvas-Objekt (Rechteck)
canvas.tag_bind('rechteck', '<Button-1>', button_press)
canvas.tag_bind('rechteck', '<Motion>', mouse_motion)
canvas.tag_bind('rechteck', '<Enter>', mouse_enter)
canvas.tag_bind('rechteck', '<Leave>', mouse_leave)

app_win.mainloop()
Zur Weiterbildung folgende Links:
http://effbot.org/tkinterbook/canvas.htm
http://infohost.nmt.edu/tcc/help/pubs/t ... anvas.html

Gruss wuf :wink:

Verfasst: Freitag 29. Mai 2009, 21:33
von krisi12345
O.K. vielen DANK!