问题
如何创建圆角文本小部件?我想我有一个创建圆形画布并用没有边框的文本框填充整个画布的想法。
问题
当我尝试扩展画布的高度和宽度时,创建圆角画布的代码不起作用。线中断并变得不连续。
创建圆角画布的代码取自 How to make a tkinter canvas rectangle with rounded corners?
我的自定义宽度和高度的代码
def rounded_rect(canvas, x, y, w, h, c):
canvas.create_arc(x, y, x+2*c, y+2*c, start= 90, extent=90, style="arc")
canvas.create_arc(x+w-2*c, y+h-2*c, x+w, y+h, start=270, extent=90, style="arc")
canvas.create_arc(x+w-2*c, y, x+w, y+2*c, start= 0, extent=90, style="arc")
canvas.create_arc(x, y+h-2*c, x+2*c, y+h, start=180, extent=90, style="arc")
canvas.create_line(x+c, y, x+w-c, y )
canvas.create_line(x+c, y+h, x+w-c, y+h )
canvas.create_line(x, y+c, x, y+h-c)
canvas.create_line(x+w, y+c, x+w, y+h-c)
import tkinter
root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.grid(row=0,column=0)
# The width and height has been changed from the original solution
rounded_rect(canvas, 10, 10, 330, 290, 10)
root.mainloop()
输出
原文由 Raj Mehta 发布,翻译遵循 CC BY-SA 4.0 许可协议
一种解决方案是使用具有自定义样式的 ttk 框架,该框架使用图像作为角。
以下示例改编自我在 2007 年写的 tcl/tk 解决方案。它使用一种奇怪的颜色作为焦点,并且需要白色背景,但是您可以创建自己的图像来替换该解决方案中使用的图像(或编辑本例中的图像1 )
1图像数据是 base64 编码的 gif。如果您对数据进行解码并将其保存为 .gif 文件,则可以对其进行编辑以使用您想要的任何颜色。