Задать вопрос
@Twedis

Как получить цвет пискеля с Canvas в tkinter?

Мне нужно узнать цвет пикселя на Canvas c помощью координат в Tkinter (к примеру цвет пиксель по x=1 и y=1 )

Код для проверки:
from tkinter import *
root = Tk()
canv = Canvas(bg="white")  
canv.grid(columnspan=3)

nujniy_cvet = #что сюда писать чтобы получить значение цвета по координатам x=1, y=1? 

print(nujniy_cvet)
root.mainloop()
  • Вопрос задан
  • 2311 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя Atype К ответам на вопрос (2)
@Twedis Автор вопроса
Вот готовый код который был мне нужен. Он написан как попало, но работает. С помощью него можно рисовать линии и получать массив закрашенных(1) и не закрашенных(0) линий.
Код

from tkinter import *
root = Tk()
screen = Canvas(root,width=504, height=504)
screen.grid(row=0, column=0)
screen.create_rectangle((0, 0, 504, 504),fill="white")	

step = 36

def click(event):    
    screen.create_oval((event.x, event.y, event.x+step, event.y+step),  width=0,  fill='black')
    xp = event.x
    yp = event.y
    xp = str(xp)+'\n'
    yp = str(yp)
    f = open('tt.txt','w')
    xp = f.write(xp)
    yp = f.write(yp)
    f.close
    screen.bind("<B1-Motion>", draw)



def onmotion(event): 
    x = event.x
    y = event.y 
    a = []
    temp = 18
    p = temp//2
    for j in range(0, 504, temp):
    	
    	for i in range(0, 504, temp):
    		if screen.itemcget(screen.find_overlapping(i+p,j+p,i+p,j+p)[-1], "fill" ) != 'black':
    			a.append(0)
    		else:
    			a.append(1)
    	   
    f1 = open("arr.txt", 'w')    
    f1.write(str(a))
    f1.close


def draw(event):
    f = open(r'tt.txt')
    xp = f.readlines()   
    xp[0] = int(xp[0])+step/2
    xp[1] = int(xp[1])+step/2    
    f.close
    
    screen.create_oval((event.x, event.y, event.x+step, event.y+step),  width=0,  fill='black')   
    screen.create_line(xp[0], xp[1], event.x+step/2, event.y+step/2,width=step, fill='black')
        
    xp = event.x
    yp = event.y
    xp = str(xp)+'\n'
    yp = str(yp)
    f = open('tt.txt','w')
    xp = f.write(xp)
    yp = f.write(yp)
    f.close
    screen.bind("<Motion>", onmotion)


screen.bind("<Button-1>",click)
 

root.mainloop()

Ответ написан
Комментировать