2012-07-03 25 views
6

Ho una tela Tkinter con una barra di scorrimento e alcuni elementi che quando faccio clic su di essi, è necessario che restituisca le coordinate. (Utilizzando Python.)Python, Tkinter: come ottenere coordinate su tela scorrevole

Questo funziona perfettamente con gli oggetti che sono inizialmente visibili nella finestra. Quando scorro verso il basso, tuttavia, e gli elementi più in basso sulla tela vengono visualizzati, non ottengo le loro coordinate di tela quando si fa clic, ma le coordinate della finestra.

Non riesco a trovare informazioni su come ottenere le coordinate assolute, quindi mi chiedo se qualcuno qui sa come farlo?

Grazie.

risposta

6

Consultare la documentazione per il widget canvas here.

Per convertire da finestra coordinate di tela coordinate, utilizzare i canvasx e canvasy metodi.

Ecco una funzione di callback esempio che converte x della finestra e coordinate y e stampa l'elemento più vicino a tale posizione tramite il find_closest()method.

def callback(event): 
    canvas = event.widget 
    x = canvas.canvasx(event.x) 
    y = canvas.canvasy(event.y) 
    print canvas.find_closest(x, y) 
+0

Grazie mille! – Yngve

+0

Felice di averlo aiutato! – gary

+0

Se l'immagine è più piccola della tela, allora il metodo precedente mi dà le coordinate assolute della tela e non le coordinate dell'immagine. C'è un modo in cui posso ottenere l'immagine più piccola per riempire la tela o ridimensionare la tela per visualizzare l'immagine senza bordi? – varagrawal

Problemi correlati