首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建Oval Python Tkinter画布

创建Oval Python Tkinter画布
EN

Stack Overflow用户
提问于 2019-07-29 01:57:25
回答 3查看 3.2K关注 0票数 0

我想用python tkinter创建这个形状:

然而,我必须使用的唯一选项是

代码语言:javascript
复制
canvas.create_polygon
canvas.create_line
canvas.create_arc
canvas.create_oval

上面这些选项都不能生成这样的形状。是否有其他方法或方法可以使用这些选项创建此形状?

EN

回答 3

Stack Overflow用户

发布于 2019-07-29 03:25:57

正如@martineau评论的那样,create_arc()是一种方法,但理解tkinter的create_oval()是至关重要的,因为圆弧是椭圆的一片:

代码语言:javascript
复制
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的capstylejoinstyle选项对arcs不可用。

票数 2
EN

Stack Overflow用户

发布于 2019-07-29 03:31:39

create_arc方法是您想要使用的方法。它以style参数指定的三种不同样式之一创建圆弧。以下是official tcl/tk documentationstyle选项的描述:

如果类型为pieslice (默认值),则圆弧的区域由椭圆的周长的一部分加上两条直线段定义,一条直线段位于椭圆的中心和周长部分的两端之间。如果type为chord,则圆弧的区域由椭圆周长的一部分加上连接该周长部分的两个端点的一条线段定义。如果类型为arc,则圆弧的区域仅由一段周长组成。在最后一种情况下,将忽略fill选项。

下面是三种风格的示例:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-07-30 01:20:01

我想这就是你要找的。

代码语言:javascript
复制
import tkinter as tk

root = tk.Tk()

canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=30, extent=120, style=tk.ARC, width=3)

root.mainloop()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57243599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档