2016-08-31 12 views
1

私は、TkinterとTurtleモジュールを組み合わせた簡単な描画プログラムに取り組んでいます。タートルフリーハンド描画

ペイントのペンウィジェットと同様のマウスを使用するだけで、ユーザーが何かを描画できるというオプションを追加したいと思います。私は多くのことを試してみました、私はlはit.Howを行うことができます方法を見つけ出すことができませんでしたlは、次のコードは、あなたがフリーハンドようになるマウス

from tkinter import * 
import turtle 

sc=Tk() 
sc.geometry("1000x1000+100+100") 

fr4=Frame(sc,height=500,width=600,bd=4,bg="light green",takefocus="",relief=SUNKEN) 

fr4.grid(row=2,column=2,sticky=(N,E,W,S)) 

#Canvas 
canvas = Canvas(fr4,width=750, height=750) 
canvas.pack() 

#Turtle 
turtle1=turtle.RawTurtle(canvas) 
turtle1.color("blue") 
turtle1.shape("turtle") 

points=[] 

spline=0 

tag1="theline" 

def point(event): 
    canvas.create_oval(event.x, event.y, event.x+1, event.y+1, fill="red") 
    points.append(event.x) 
    points.append(event.y) 
    return points 

def canxy(event): 
    print (event.x, event.y) 

def graph(event): 
    global theline 
    canvas.create_line(points, tags="theline") 

def toggle(event): 
    global spline 
    if spline == 0: 
     canvas.itemconfigure(tag1, smooth=1) 
     spline = 1 
    elif spline == 1: 
     canvas.itemconfigure(tag1, smooth=0) 
     spline = 0 
    return spline 

canvas.bind("<Button-1>", point) 

canvas.bind("<Button-3>", graph) 

canvas.bind("<Button-2>", toggle) 

sc.mainloop() 
+0

編集と修正をお願いします。 –

答えて

2

を使用して亀がキャンバス上(ペイント上のペンウィジェットのような)何かを描くことができますカメと引く。残りのコードと統合する必要があります:

import tkinter 
import turtle 

sc = tkinter.Tk() 
sc.geometry("1000x1000+100+100") 

fr4 = tkinter.Frame(sc, height=500, width=600, bd=4, bg="light green", takefocus="", relief=tkinter.SUNKEN) 

fr4.grid(row=2, column=2, sticky=(tkinter.N, tkinter.E, tkinter.W, tkinter.S)) 

# Canvas 
canvas = tkinter.Canvas(fr4, width=750, height=750) 
canvas.pack() 

# Turtle 
turtle1 = turtle.RawTurtle(canvas) 
turtle1.color("blue") 
turtle1.shape("turtle") 

def drag_handler(x, y): 
    turtle1.ondrag(None) # disable event inside event handler 
    turtle1.goto(x, y) 
    turtle1.ondrag(drag_handler) # reenable event on event handler exit 

turtle1.ondrag(drag_handler) 

sc.mainloop() 
+0

ありがとうございます。これはまさに私が探していたものです。 –