我使用畫布在tkinter中創建簡單的CAD應用程序。空心圓柱體是通過使用兩個橢圓形物體創建的,如下面的示例代碼所示。內圈/橢圓與畫布的背景具有相同的填充,從而形成空心物體的幻覺。使用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