37

Pythonのタートルモジュールで図面を作成した後、ビットマップまたはベクターグラフィックス画像を保存する方法を理解したいと思います。少しグーグルした後、私は簡単な答えを見つけることができません。私はcanvas2svgというモジュールを見つけましたが、Pythonは非常に初めてで、モジュールのインストール方法がわかりません。タートルキャンバスの画像を保存するための組み込みの方法はありますか?そうでない場合は、UbuntuマシンのPython用のカスタムモジュールをどこに配置しますか?

4

2 に答える 2

48
from tkinter import *  # Python 3
#from Tkinter import *  # Python 2
import turtle


turtle.forward(100)
ts = turtle.getscreen()

ts.getcanvas().postscript(file="duck.eps")

これはあなたを助けます。私は同じ問題を抱えていました、私はそれをグーグルで検索しました、しかしタートルモジュールのソースを読むことによってそれを解決しました。

キャンバス(tkinter)オブジェクトにはpostscript関数があります。あなたはそれを使うことができます。

タートルモジュールには、タートルが描画しているTiknterキャンバスを提供する「タートルスクリーン」を提供する「getscreen」があります。

これにより、カプセル化されたPostScript形式で保存されるため、GIMPで確実に使用できますが、他のビューアもあります。または、これから.gifを作成する方法をGoogleで検索できます。無料のオープンソースのInkscapeアプリケーションを使用して、.epsファイルも表示し、ベクターまたはビットマップイメージファイルに保存できます。

于 2011-05-18T18:27:57.557 に答える
6

Pythonの標準Turtleインターフェースをサポートするsvg -turtleパッケージを作成し、 svgwriteモジュールを使用してSVGファイルを作成しました。でインストールしpip install svg-turtle、次のように呼び出します。

from svg_turtle import SvgTurtle


def draw_spiral(t):
    t.fillcolor('blue')
    t.begin_fill()
    for i in range(20):
        d = 50 + i*i*1.5
        t.pencolor(0, 0.05*i, 0)
        t.width(i)
        t.forward(d)
        t.right(144)
    t.end_fill()


def write_file(draw_func, filename, width, height):
    t = SvgTurtle(width, height)
    draw_func(t)
    t.save_as(filename)


def main():
    write_file(draw_spiral, 'example.svg', 500, 500)
    print('Done.')


if __name__ == '__main__':
    main()

canvasvgパッケージは別のオプションです。タートルコードを実行すると、tkinterキャンバス上のすべてのアイテムがSVGファイルに変換されます。これにはtkinterサポートと表示が必要ですが、svg-turtleは必要ありません。

于 2017-08-11T00:17:45.587 に答える