2017-12-15 15 views
0

私はPythonには新しく、tkinterを使ってシミュレータのGUIを設計しようとしています。キャンバスにオブジェクトを作成するPython tkinter

私の問題は、ボタンをクリックしてキャンバスにオブジェクトイメージを作成する必要があり、キャンバス領域をドラッグできなければならないということです。

from tkinter import * 
def show_train(): 
    canvas.create_image(30,30, image=image1) 
root = Tk() 
canvas = Canvas(iframe5, height=600, width=520, bg="white") 
image1 = PhotoImage(file='train.png') 
b1=Button(frame,justify=LEFT) 
b1.config(image=image1,width="80",height="80", command=show_train) 
b1.pack(side=LEFT) 
b1.place(x=0, y=12) 
canvas.pack(side=RIGHT, expand=True) 
root.mainloop() 

あらゆる種類の魂:

はしかし、現在、私は私の部分のコードです。ここ

をドラッグするだけでキャンバスに画像を作成することができるとできないのですか? ありがとうございます

+0

ドラッグするコードはありません。なぜあなたはそのコードを書くことができませんか? –

+0

私は最初にイメージを作成することができました。それは、オブジェクトイメージを作成するのに手間がかかり、ドラッグにコードがないのです。全体的な目標は、そのオブジェクト画像をドラッグすることでした。しかし、ええ、私はすでに両方を完了しています。 –

答えて

1

このコードは今のところ動作します。

class CreateCanvasObject(object): 
    def __init__(self, canvas, image_name, xpos, ypos): 
     self.canvas = canvas 
     self.image_name = image_name 
     self.xpos, self.ypos = xpos, ypos 
     self.tk_image = tk.PhotoImage(file="{}{}".format(IMAGE_PATH, image_name)) 
     self.image_obj= canvas.create_image(xpos, ypos, image=self.tk_image) 
     canvas.tag_bind(self.image_obj, '<Button1-Motion>', self.move) 
     canvas.tag_bind(self.image_obj, '<ButtonRelease-1>', self.release) 
     self.move_flag = False 

    def move(self, event): 
     if self.move_flag: 
      new_xpos, new_ypos = event.x, event.y 
      self.canvas.move(self.image_obj, new_xpos-self.mouse_xpos ,new_ypos-self.mouse_ypos) 
      self.mouse_xpos = new_xpos 
      self.mouse_ypos = new_ypos 
     else: 
      self.move_flag = True 
      self.canvas.tag_raise(self.image_obj) 
      self.mouse_xpos = event.x 
      self.mouse_ypos = event.y 

    def release(self, event): 
     self.move_flag = False 
関連する問題