Pedro Izecksohn wrote: > The code available from: > http://izecksohn.com/pedro/python/canvas/testing.py > draws 2 horizontal lines on a Canvas. Why the 2 lines differ on thickness > and length? > > The Canvas' method create_line turns on at least 2 pixels. But I want to > turn on many single pixels on a Canvas. How should I do this? Canvas has > no method create_pixel or create_point.
> #!/usr/bin/python3 > > import tkinter as tk > > 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") > 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): > self.canvas.create_line (p.x, p.y, p.x, p.y, fill = color) > > 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() I just tried your script, and over here the line drawn with > def drawLine (self, pa, pb, color): > self.canvas.create_line (pa.x, pa.y, pb.x, pb.y, fill = color) has a width of 1 pixel and does not include the end point. Therefore the "line" drawn with > def drawPoint (self, p, color): > self.canvas.create_line (p.x, p.y, p.x, p.y, fill = color) does not show up at all. You could try to specify the line width explicitly: def drawPoint (self, p, color): self.canvas.create_line (p.x, p.y, p.x+1, p.y, fill=color, width=1) If that doesn't work (or there's too much overhead) use pillow to prepare an image and show that. Another random idea: if you have a high resolution display your OS might blow up everything. In that case there would be no fix on the application level. -- https://mail.python.org/mailman/listinfo/python-list