GUI application utilisant Tkinter - Glisser-Déposer

J'ai été récemment à l'aide de WxPython pour créer une interface graphique simulateur de réseaux Cisco packet tracer, mais si je suis honnête, ça a été extrêmement difficile d'essayer de trouver des exemples de ce que j'ai besoin etc etc. Iv recours à l'ancien fidèle de Savoirs traditionnels.

Mon programme à ce jour a une barre de menu qui se compose d'un Fichier > Exit. Il dispose également d'un bouton de Sortie en bas à Droite de l'application. Ainsi que cela, il dispose d'une toile de taille définie et une variété de boutons qui lorsqu'il est cliqué produire une petite image de la matériel sur la toile. Cela a été fait à l'aide de PIL

Ce que j'ai besoin de la prochaine est pour être en mesure de faire glisser ces images autour de la toile et cela s'avère un peu difficile. J'ai regardé l'exemple suivant de la façon dont il a été brisé et que je sorte de comprendre comment vous avez besoin d'un sur la définition, le mouvement (allant de a à b) et sur la définition de parution, mais comment puis-je l'appliquer à mon code que j'ai déjà?

Voici le lien de ce que j'ai mentionné ci-dessus:
http://www.python-forum.org/pythonforum/viewtopic.php?f=4&p=75789

Enfin, Voici le code que j'ai déjà. Je peux comprendre que la mise en page et la structure de mon code n'est pas très grande comme je suis assez nouveau à la programmation, mais de toute orientation /exemples /représentations visuelles serait étonnant.

  from Tkinter import*
from PIL import Image, ImageTk
class AllTkinterWidgets:
def __init__(self, master):
frame= Frame(master, width=900, height=600)
frame.pack()
iframe5 = Frame (frame, bd=2, relief=RAISED)
iframe5.pack(expand=1, fill=X, pady=10, padx=5)
c = Canvas(iframe5, bg='white', width=600, height=500)
c.pack()
# definitions to print hardware images to the canvas
# -----------------------------------------------------------------------
def show_imageRouter():
c.create_image(30,30, image=image1)
def show_imageSwitch():
c.create_image(30,60, image=image2)
def show_imageServer():
c.create_image(30,100, image=image3)
def show_imageIpPhone():
c.create_image(30,140, image=image4)
def show_imageWirelessRouter():
c.create_image(30,180, image=image5)
def show_imageHost():
c.create_image(30, 220, image=image6)
# Network hardware buttons created
# ----------------------------------------------------
self.button = Button(frame, text = "Router", height= 1, width= 8, padx=2, pady=2,command=show_imageRouter)
self.button.pack(side = LEFT)
self.button = Button(frame, text = "Switch",height= 1, width= 8, padx=2, pady=2, command=show_imageSwitch)
self.button.pack(side = LEFT)
self.button = Button(frame, text = "Server",height= 1, width= 8, padx=2, pady=2, command=show_imageServer)
self.button.pack(side = LEFT)
self.button = Button(frame, text = "IP Phone",height= 1, width= 8, padx=2, pady=2, command=show_imageIpPhone)
self.button.pack(side = LEFT)
self.button = Button(frame, text = "Wireless Router",height= 1, width= 12, padx=2, pady=2, command=show_imageWirelessRouter)
self.button.pack(side = LEFT)
self.button = Button(frame, text = "Host",height= 1, width= 8, padx=2, pady=2, command=show_imageHost)
self.button.pack(side = LEFT)
self.button = Button(frame, text = "Cabling",height= 1, width= 8, padx=2, pady=2)
self.button.pack(side = LEFT)
self.button = Button(frame, text = "Square",height= 1, width= 8, padx=2, pady=2)
self.button.pack(side = LEFT)
# Create the image objects for the hardware Images
# ----------------------------------------------------------------------
imageFile = "router.png"
image1 = ImageTk.PhotoImage(Image.open(imageFile))
imageFile = "switch.png"
image2 = ImageTk.PhotoImage(Image.open(imageFile))
imageFile = "Server.png"
image3 = ImageTk.PhotoImage(Image.open(imageFile))
imageFile = "ipPhone.png"
image4 = ImageTk.PhotoImage(Image.open(imageFile))
imageFile = "WirelessRouter.png"
image5 = ImageTk.PhotoImage(Image.open(imageFile))
imageFile = "Host.png"
image6 = ImageTk.PhotoImage(Image.open(imageFile))
root = Tk()
all = AllTkinterWidgets(root)
def Exit():
print "Exit"
# Create an Exit Button
toolbar = Frame(root)
b = Button(toolbar, text="Exit", width=6, height=3, command=Exit)
b.pack(side=RIGHT, padx=2, pady=2)
toolbar.pack(side=BOTTOM, fill=X)
# Press Esc to quit
root.bind("<Escape>", exit)
# Creation of a menu File > Exit
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="Exit", command=Exit)
root.mainloop()

Désolé si le retrait est un peu étrange. J'ai ajusté à faire bloc ensemble ici.

OriginalL'auteur karl davies | 2012-03-29