栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何制作带有圆角的tkinter画布矩形?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何制作带有圆角的tkinter画布矩形?

为tobias方法提供一种替代方法实际上是使用一个多边形来完成。

如果您担心优化,或者不必担心用于引用单个对象的标签系统,则这样做的好处是成为一个画布对象。

该代码稍长一些,但是非常基础,因为它只是利用了以下想法:在平滑多边形时,可以两次给出相同的坐标以“阻止”平滑发生。

这是可以做什么的一个示例:

from tkinter import *root = Tk()canvas = Canvas(root)canvas.pack()def round_rectangle(x1, y1, x2, y2, radius=25, **kwargs):    points = [x1+radius, y1,   x1+radius, y1,   x2-radius, y1,   x2-radius, y1,   x2, y1,   x2, y1+radius,   x2, y1+radius,   x2, y2-radius,   x2, y2-radius,   x2, y2,   x2-radius, y2,   x2-radius, y2,   x1+radius, y2,   x1+radius, y2,   x1, y2,   x1, y2-radius,   x1, y2-radius,   x1, y1+radius,   x1, y1+radius,   x1, y1]    return canvas.create_polygon(points, **kwargs, smooth=True)my_rectangle = round_rectangle(50, 50, 150, 100, radius=20, fill="blue")root.mainloop()

使用此功能,您只需提供要用于矩形的法线坐标,然后指定在圆角处变圆的“半径”即可。使用

**kwargs
表示您可以
fill="blue"
像通常使用
create_
方法那样传递关键字参数,例如。

尽管坐标看起来很复杂,但是它只是有条不紊地绕到“矩形”中的每个点,从而给每个非角点两次。

如果您不介意较长的代码行,则可以将所有坐标放在一行上,从而使函数只有2行(!)。看起来像:

def round_rectangle(x1, y1, x2, y2, r=25, **kwargs):        points = (x1+r, y1, x1+r, y1, x2-r, y1, x2-r, y1, x2, y1, x2, y1+r, x2, y1+r, x2, y2-r, x2, y2-r, x2, y2, x2-r, y2, x2-r, y2, x1+r, y2, x1+r, y2, x1, y2, x1, y2-r, x1, y2-r, x1, y1+r, x1, y1+r, x1, y1)    return canvas.create_polygon(points, **kwargs, smooth=True)

这将产生以下内容(请注意,这是一个canvas对象):



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626393.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号