----- Original Message ----- > From: Gregory Ewing > To: python-list@python.org > Cc: > Sent: Thursday, June 12, 2014 8:38 AM > Subject: Re: Lines on a tkinter.Canvas > > Pedro Izecksohn wrote: >> The Canvas' method create_line turns on at least 2 pixels. But I want > to turn >> on many single pixels on a Canvas. > > You could try using a 1x1 rectangle instead. > > However, be aware that either of these will use quite a > lot of memory per pixel. If you are drawing a very large > number of pixels, this could cause performance problems. > In that case, you might want to use a different approach, > such as creating an image and telling the canvas to display > the image.
Thank you Greg. Your second approach works and the script became: #!/usr/bin/python3 import tkinter as tk BITMAP = ''' #define im_width 1 #define im_height 1 static char im_bits[] = { 0xff }; ''' class Point (): def __init__ (self, x, y): self.x = x self.y = y class Board (tk.Frame): def __init__ (self, bg, dimensions): tk.Frame.__init__ (self, tk.Tk()) self.pack() self.canvas = tk.Canvas (self, bd = 0, bg = bg, width = dimensions.x, height = dimensions.y) self.canvas.pack (side = "top") self.objects_drawn = [] def drawLine (self, pa, pb, color): self.canvas.create_line (pa.x, pa.y, pb.x, pb.y, fill = color) def drawPoint (self, p, color): bitmap = tk.BitmapImage (data=BITMAP, foreground = color) self.objects_drawn.append (bitmap) self.canvas.create_image (p.x, p.y, image = bitmap) dimensions = Point (500, 500) board = Board ('black', dimensions) color = 'red' p = Point (0, 250) while (p.x < dimensions.x): board.drawPoint (p, color) p.x += 1 pa = Point (0, 350) pb = Point (499, 350) board.drawLine (pa, pb, color) board.mainloop() -- https://mail.python.org/mailman/listinfo/python-list