不断出现错误“ _tkinter.TclError:尝试通过鼠标输入在Tkinter中的PhotoImage上绘制圆时无法解析颜色“ 115”

时间:2018-09-04 16:46:17

标签: python tkinter paint

from tkinter import *
import tkinter as tk
import math
class Paint():
    def __init__(self):

        self.window=Tk()
        self.sizex=500
        self.sizey=500
        self.default_pen_size=10

        self.canvas = Canvas(self.window, width=self.sizex, height=self.sizey, bg = "white")
        self.canvas.pack()
        self.img = PhotoImage(width=self.sizex, height=self.sizey)
        self.canvas.create_image((self.sizex/2, self.sizey/2), image=self.img, state="normal")
        self.canvas.bind("<Button-1>", self.color_in)
        self.canvas.bind("<B1-Motion>", self.color_in)
        self.window.mainloop()
    def color_in(self, event):
        self.img.put("black", (event.x , event.y))
        radius_sqrt=math.sqrt(self.default_pen_size)
        circle=self.canvas.create_oval(event.x - radius_sqrt, event.y - radius_sqrt, event.x + radius_sqrt,
        event.y + radius_sqrt, fill="black")
        self.img.put(circle)

if __name__=='__main__':
    paint=Paint()

在上面的代码中,我试图使用canvas.create_oval方法在Photoimage对象上绘制一个圆。到目前为止,它仍在工作,但是它始终抛出异常“ _tkinter.TclError:无法解析颜色“ 115””。知道是什么原因造成的吗?

1 个答案:

答案 0 :(得分:1)

问题是这行代码:

$string1 = 'Cotton Lanyard &frac12;"';
$string2 = 'Organic Cotton Lanyard &frac58;"';

echo html_entity_decode($string1); //Cotton Lanyard ½"
echo html_entity_decode($string2); //Organic Cotton Lanyard &frac58;"

self.img.put(circle) 的第一个参数必须是颜色或颜色列表。您将向其传递之前创建两行的圆形对象的ID,并且该ID不是颜色。

我不知道您认为该行应该做什么,但是我的猜测是您可以删除它而不用其他任何东西替换它。