Ordinamento manuale foto usando canvas

Qui vengono spostati discussioni e messaggi ritenuti inadeguati per il contenuto o la forma con cui sono stati espressi.

Ordinamento manuale foto usando canvas

Messaggioda maresama » mercoledì 26 dicembre 2018, 15:10

Il primo problema l'ho risolto modificando prova2:
Codice: Seleziona tutto
def Prova2():
    import Tkinter as tk # for Python2
    import PIL.Image, PIL.ImageTk
    win = tk.Tk()
    canvas = tk.Canvas(win, height = 800, width = 1000)
    #Create a rectangle with stipples on top of the images
    rectangle = canvas.create_rectangle(0, 0, 900, 700, fill = "gray", stipple = "gray12")
    #Create images
    def Ximag(foto):
       SPRITE = PIL.Image.open(foto)
       imagePIL = SPRITE.resize((100, 100))
       imagePI = PIL.ImageTk.PhotoImage(imagePIL)
       image = canvas.create_image(100, 100, image = imagePI, tags = "image")
       return image,imagePI
#--
    elefoto=["/home/giorgio/Scrivania/a30/ft-01.JPG",
             "/home/giorgio/Scrivania/a30/ft-02.JPG",
             "/home/giorgio/Scrivania/a30/ft-03.JPG"
             ]
    images=[];   pil=[]
    for foto in elefoto:
        image,imagePI=Ximag(foto)
        images.append(image)
        pil.append(imagePI)
     
    #images = [image1, image2, image3]

    def getImage(x, y):
        for image in images:
            curr_x, curr_y = canvas.coords(image)
            x1 = curr_x - imagePI.width()/2
            x2 = curr_x + imagePI.width()/2
            y1 = curr_y - imagePI.height()/2
            y2 = curr_y + imagePI.height()/2
            if (x1 <= x <= x2) and (y1 <= y <= y2):
                return image
    #Callback
    # Here I select image1 or image2 depending on where I click, and
    # drag them on the canvas. The problem is when I put the rectangle
    # on top using tag_raise (see below).
    def callback(event):
        id  = getImage(event.x, event.y)
        if id:
            canvas.coords(id, (event.x, event.y))

    #Binding
    canvas.bind("<B1-Motion>", callback)
    #Place the rectangle on top of all
    canvas.pack()

    # This is the problem. I want to have the rectangle on top and be able to use the callback
    canvas.tag_raise(rectangle)
    canvas.mainloop()



invece non riesco a risolvere il secondo problema....
Aspetto qualche suggerimento...
Grazie
maresama
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1545
Iscrizione: gennaio 2008

Re: Ordinamento manuale foto usando canvas

Messaggioda giulux » giovedì 27 dicembre 2018, 4:14

duplo
con l'aiuto della comunità le cose si mettono quasi sempre a posto (e non apposto), a parte (e non apparte) qualche caso ...
Avatar utente
giulux
Amministratore
Amministratore
 
Messaggi: 22908
Iscrizione: gennaio 2010
Località: Roma
Desktop: xubuntu - ubuntu 18.04
Distribuzione: Ubuntu+Xubuntu 18.04.2 LTS x86_64
Sesso: Maschile


Torna a Quarantena

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 0 ospiti