최근 WxPython을 사용하여 Cisco 패킷 추적 프로그램과 같은 GUI 네트워크 시뮬레이터를 만들었지 만 솔직히 Iv가 필요한 등의 예제를 찾기 란 매우 어렵습니다. 다시 옛 충실한 Tk.Tkinter를 이용한 GUI 응용 프로그램 - 드래그 앤 드롭
내 프로그램에는 파일> 종료로 구성된 메뉴 막대가 있습니다. 또한 응용 프로그램의 하단 오른쪽에 Exit 버튼이 있습니다. 이것뿐만 아니라 캔버스에 설정된 크기의 캔버스와 다양한 버튼을 클릭하면 캔버스에 하드웨어의 작은 이미지가 생성됩니다. 이 작업은 PIL을 사용하여 수행되었습니다.
다음에 필요한 것은 캔버스 주위로 이미지를 드래그 할 수 있으며 약간 어렵다는 것입니다. 나는 그것이 어떻게 분해되었고 다음과 같은 클릭 정의, 모션 (a에서 b로 이동)과 릴리즈 정의가 필요한지 이해하지만, 어떻게 코드에 적용 할 것인가에 대한 다음 예제를 살펴 보았습니다. 난 이미 가지고 있는데? 마지막으로 여기에 http://www.python-forum.org/pythonforum/viewtopic.php?f=4&p=75789
내가 이미 가지고있는 코드입니다 : 여기
내가 위에서 언급 한 것과 링크입니다. 프로그래밍에 익숙하지 않아서 코드/레이아웃/구조가 훌륭하지는 않으나 모든 지침/예제/시각적 표현은 놀라 울 것입니다.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()
들여 쓰기가 약간 이상하다면 죄송합니다. 나는 그것을 여기 함께 막기 위해 그것을 조정했다.