我唯一需要使用的选项是
canvas.create_polygon
canvas.create_line
canvas.create_arc
canvas.create_oval
以上所有这些选项都不具有生成这种形状的能力。我可以使用这些选项来创建形状吗?
答案 0 :(得分:2)
正如@martineau所评论的那样,create_arc()
是方法,但是理解tkinter的create_oval()
至关重要,因为弧是椭圆的一部分:
import tkinter as tk
WINDOW_WIDTH, WINDOW_HEIGHT = 600, 300
OVAL_WIDTH, OVAL_HEIGHT = 576, 290
# (x0, y0, x1, y1) rectangle for oval
BOUNDS = ( \
(WINDOW_WIDTH - OVAL_WIDTH) / 2, \
(WINDOW_HEIGHT - OVAL_HEIGHT) / 2, \
3*WINDOW_WIDTH/2 - OVAL_WIDTH/2, \
3*WINDOW_HEIGHT/2 - OVAL_HEIGHT/2 \
)
root = tk.Tk()
canvas = tk.Canvas(root, width=WINDOW_WIDTH+20, height=WINDOW_HEIGHT+20) # +20 for window "chrome"
canvas.pack()
rectangle = canvas.create_rectangle(*BOUNDS, outline="blue") # just for illustration
oval = canvas.create_oval(*BOUNDS, outline="red") # just for illustration
arc = canvas.create_arc(*BOUNDS, start=30, extent=120, style=tk.ARC, width=3)
root.after(3000, canvas.delete, rectangle) # remove rectangle illustration
root.after(6000, canvas.delete, oval) # remove oval illustration
root.mainloop()
使用Arc时,它在底部创建一条线作为轮廓 弧线-我该如何摆脱?
上面的style=tk.ARC
可以解决这个问题-默认为扇形。
此弧的末端如何终止与您的插图不同。据我所知,弧线无法使用tkinter的capstyle
和joinstyle
选项。
答案 1 :(得分:2)
您要使用create_arc
方法。它创建由style
参数指定的三种不同样式之一的弧。 official tcl/tk documentation就是这样描述style
选项的:
如果类型为 pieslice (默认设置),则弧的区域由椭圆的周长的一部分加两个线段定义,其中一个在椭圆的中心与周长部分的两端之间。如果type为 chord ,则弧的区域由椭圆的周长的一部分加上连接周长部分的两个端点的单个线段定义。如果类型为 arc ,则弧的区域仅由周边的一部分组成。在最后一种情况下,填充选项将被忽略。
以下是这三种样式的示例:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, background="black")
canvas.pack(side="top", fill="both", expand=True)
canvas.create_arc(0, 20, 100, 120, outline="red", style="pieslice")
canvas.create_arc(80, 20, 180, 120, outline="red", style="chord")
canvas.create_arc(160, 20, 260, 120, outline="red", style="arc")
root.mainloop()
答案 2 :(得分:0)