【发布时间】:2017-01-01 22:53:34
【问题描述】:
我正在使用画布在 tkinter 中创建一个简单的 CAD 应用程序。空心圆柱体是通过使用两个椭圆形对象创建的,如下面的示例代码所示。内圈/椭圆形的填充与画布的背景相同,从而产生空心物体的错觉。
如果我用不同的填充(如矩形所示)将圆柱体绘制在另一个对象上,空心效果就会丢失。
不可能知道将在画布上创建的每个对象的颜色,或者用户可能会在某一点创建一个圆柱体并将其移动到不同的位置/在具有不同填充颜色的不同对象上。
在这些情况下如何创建空心对象?
示例代码:
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()
【问题讨论】:
-
一个很厚的
width的圆圈,也许没有填充? -
@TadhgMcDonald-Jensen 感谢您的来信。我试过了,但效果不好。画布还有其他方法,包括移动/滚动、缩放等。当我缩小时,宽度较粗的圆柱体会变成颜色的飞溅(可能不是正确的工作)。在绘制圆柱体后,我还必须对圆柱体的尺寸进行一些计算。如果使用带有粗
width的圆圈,仍然可以完成计算(尽管有更多的数学运算)。使用width的主要问题是对象如何缩放。