python怎样填充颜色_python – 使用颜色填充Tkinter画布对象之间的空间

该博客介绍了如何在Python的Tkinter库中创建一个自定义的Canvas小部件,通过子类化实现带圆角的矩形。作者提供了一个新方法`create_rounded`,利用四个弧形和两条直线来构造矩形的轮廓。文章讨论了如何修改此方法以实现单一颜色的填充,并建议使用PIESLICE样式和fill参数直接填充圆角矩形的内部,而不是仅绘制轮廓并尝试填充内部。
摘要由CSDN通过智能技术生成

Python 2.7.8,Windows 7

我已经将Tkinter画布小部件子类化,我添加了一个新方法来创建一个带有圆边的矩形.

import Tkinter as tk

class MyCanvas(tk.Canvas):

def __init__(self, *args, **kwargs):

tk.Canvas.__init__(self, *args, **kwargs)

def create_rounded(self, x1, y1, x2, y2, r):

self.create_arc(x1, y1, x1+r, y1+r, start=90, extent=90, style=tk.ARC)

self.create_arc(x2-r, y1, x2, y1+r, start=0, extent=90, style=tk.ARC)

self.create_arc(x1, y2-r, x1+r, y2, start=180, extent=90, style=tk.ARC)

self.create_arc(x2-r, y2-r, x2, y2, start=270, extent=90, style=tk.ARC)

self.create_line(x1+r/2, y1, x2-r/2, y1)

self.create_line(x1, y1+r/2, x1, y2-r/2)

self.create_line(x1+r/2, y2, x2-r/2, y2)

self.create_line(x2, y1+r/2, x2, y2-r/2)

我想用单一颜色填充我创建的圆角矩形.我该如何解决这个问题.

w9lr6.png

ySulM.png

最佳答案 不是绘制轮廓并尝试用红色填充内部,为什么不用预先存在的画布对象构建圆角矩形?角落有四个圆形饼状切片,两个矩形形成十字形?像这样的东西:

import Tkinter as tk

class MyCanvas(tk.Canvas):

def __init__(self, *args, **kwargs):

tk.Canvas.__init__(self, *args, **kwargs)

def create_rounded(self, x1, y1, x2, y2, r):

self.create_arc(x1, y1, x1+r, y1+r, start=90, extent=90, style=tk.PIESLICE, fill = "red")

self.create_arc(x2-r, y1, x2, y1+r, start=0, extent=90, style=tk.PIESLICE, fill = "red")

self.create_arc(x1, y2-r, x1+r, y2, start=180, extent=90, style=tk.PIESLICE, fill = "red")

self.create_arc(x2-r, y2-r, x2, y2, start=270, extent=90, style=tk.PIESLICE, fill = "red")

self.create_rectangle(x1+r/2, y1-r/2, x2-r/2, y2+r/2, fill = "red")

self.create_rectangle(x1, y1, x2, y2, fill="red")

我没有测试过这个,所以我可能错误地找到了坐标,或者输入了语法错误,但我想你会明白我的意思.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值