Zwei fragen zur Maus

Fragen zu Tkinter.
Antworten
Benutzeravatar
krisi12345
User
Beiträge: 205
Registriert: Mittwoch 4. März 2009, 16:56
Wohnort: Das schöne München
Kontaktdaten:

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?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:
Take it easy Mates!
Benutzeravatar
krisi12345
User
Beiträge: 205
Registriert: Mittwoch 4. März 2009, 16:56
Wohnort: Das schöne München
Kontaktdaten:

O.K. vielen DANK!
Antworten