Tkinterモジュールを使用して、グラフィックを作成するためのかなり畳み込まれたスクリプトを作成しました。Python - Tkinterで保存されたPSイメージ - 開けません。
これは期待どおりに機能し、キャンバスをPostScriptファイルとして保存します。
PSファイルを何でもレンダリングできません。まったく。
私は、Tkinterを使用することに決めたとき、私はPSファイルでもっと標準的なフォーマットにすることができると確信していました。
私は図面をPILに移植することを提案するいくつかのチュートリアルを見ましたが、それはうまくいくかもしれませんが、すべての動的オブジェクトをtkからPILに移植するのはかなりの作業になります。
誰かがウィジェットウィンドウからピクセルをイメージファイルにすばやく/より汚い方法で持っているかどうかは疑問でした。
PSファイルを表示/ラスタライズするWindowsの方法はありますか?興味があればどこかのサンプルPSファイルを置くことができますか? (Pythonのコードは非常に複雑である、と一緒にデータを引っ張って3つのMySQLのテーブルが必要です)
私はここからのscreengrabメソッドを使用しようとしています:http://mail.python.org/pipermail/image-sig/2003-May/002292.html
と、右の順序で物事を取得するために苦労しています。
Tkinterのコード:
def drawCircles(MasterList,buildlist):
master = Tk()
w = Canvas(master, width=1000, height=1000)
w.config(bg='white')
coordsMain = MasterList[6:]
textMain = MasterList[0:2]
w.pack()
w.create_oval(*coordsMain, width=3, fill = "ivory3")
masterLabel = "Source PUID\n" + str(MasterList[3]) + "\nFiles = " + str(MasterList[4])
w.create_text(*textMain, text=masterLabel, justify = "center", font=("Helvetica", 16))
for i in buildlist:
coordsSet = i[6:10]
w.create_oval(*coordsSet, width=3, fill = i[5])
set_label = i[3] + "\n" + str(i[4]) + "%"
l=w.create_text(4,4, text=set_label, justify = "center", fill="white", font=("Helvetica", 16))
a,b,c,d= (w.bbox(l))
bboxArea =(c-a)*(d-b)
a,b,c,d = i[6:10]
circleArea = (c-a)*(d-b)
if bboxArea>circleArea:
textSet = i[10:]
j=w.create_text(*textSet, text=set_label, justify = "center", font=("Helvetica", 16))
r=w.create_rectangle(w.bbox(j),fill="white", width=0)
else:
textSet = i[:2]
j=w.create_text(*textSet, text=set_label, justify = "center", font=("Helvetica", 16))
r=w.create_rectangle(w.bbox(j),fill=i[5], width=0)
w.tag_lower(r,j)
PUID = str(MasterList[3])
PUID = PUID.replace('/', '-')
filename = "\images\\" + PUID + ".jpg"
mainloop()
画面のグラブコード:
x0 =w.winfo_rootx()
y0 =w.winfo_rooty()
x1 =x0 + w.winfo_width()
y1 =y0 + w.winfo_height()
im =ImageGrab.grab((x0, y0, x1, y1))
im.save(filename)
私は(のjpgをこのように作ることができますが、JGPで、ウィジェットの内容を取得するように見えることはできません作成されるファイルはjpgとして宣言されますが、イメージのペイロードはありません)
メインループの後にスクリーングラブコードを置くと、mainloopの前にオブジェクトが破壊されたことが示されます。まだまだ....
私は、コマンドラインGhostsciptから画像を開いて試してみましたが、それらはすべてでレンダリングされません - 私はまだ私が得ることができるかどうかを確認するために設定をいじっていますそれは飛んでいる。 – Jay
PostScriptファイルをどこかに置くことはできますか?以前はPythonからPostScriptを生成しました。それほど難しいことではありません。 –
確かに - http://dl.dropbox.com/u/59536414/fmt-15.PSこれは1000 x 1000のキャンバスにする必要があります – Jay