キャンバスを使用してtkinterで簡単なCADアプリケーションを作成しています。中空円筒は、以下のサンプルコードに示すように、2つの楕円形のオブジェクトを使用して作成されます。内側の円/楕円は、キャンバスの背景と同じ塗りつぶしをしているので、中空のオブジェクトの錯覚を作り出します。tkinterキャンバスを使用してPythonで中空円筒またはパイプを作成する
矩形で示されているように、異なる塗りつぶしで別のオブジェクト上に円柱をプロットすると、中空の効果は失われます。
キャンバス上に作成されるすべてのオブジェクトの色を知ることは不可能です。または、ある点で円柱を作成し、別の場所に移動するか、別の塗りつぶし色で別のオブジェクトに移動させることができます。
これらのケースでは、どのように中空オブジェクトを作成しますか?
サンプルコード:
import Tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=350, background="RoyalBlue4")
canvas.pack()
#Plot on the canvas
def cylinder(OD, ID):
canvas.create_oval(OD, outline="black", fill="SkyBlue1")
canvas.create_oval(ID, outline="black", fill="RoyalBlue4")
def rectangle(dim):
canvas.create_rectangle(dim, outline="black", fill="white")
rectangle([10, 10, 250, 150])
cylinder([75, 30, 175, 130], [85, 40, 165, 120])
cylinder([150, 200, 250, 300], [175, 225, 225, 275])
root.mainloop()
実際には太い「幅」の入った円形で、おそらく埋まりません。 –
@ TadhgMcDonald-Jensenノートをありがとう。私はそれを試みたが、うまくいかなかった。キャンバスには、移動/スクロール、ズームなどの他のメソッドがあります。太い幅のシリンダは、ズームアウトするとスプラッシュ(適切な作業ではないかもしれません)になります。私はまた、それが描画された後にシリンダの寸法を計算する必要があります。太い「幅」の円が使用されていれば(計算は増えますが)計算を行うことはできます。 'width'を使用する際の主な問題は、オブジェクトのスケール方法です。 – Khristos