Продолжайте получать ошибку "_tkinter.TclError: не удается разобрать цвет" 115 "при попытке нарисовать круг на PhotoImage в Tkinter с помощью ввода с помощью мыши - PullRequest
0 голосов
/ 04 сентября 2018
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()

В моем коде выше я пытаюсь нарисовать круг на объект Photoimage, используя метод canvas.create_oval. Пока он работает, но продолжает выдавать исключение "_tkinter.TclError: не удается разобрать цвет" 115 "". Есть идеи, что вызвало это?

1 Ответ

0 голосов
/ 04 сентября 2018

Проблема в этой строке кода:

self.img.put(circle)

Первый аргумент put должен быть цветом или списком цветов. Вы передаете ему идентификатор объекта круга, который был создан двумя строками ранее, и идентификатор не является цветом.

Я не знаю, что, по вашему мнению, должна делать эта строка, но я предполагаю, что вы можете просто удалить ее, не заменяя ее чем-либо еще.

...