----- Original Message -----
From: Gregory Ewing
To: (e-mail address removed)
Cc:
Sent: Thursday, June 12, 2014 8:38 AM
Subject:Re: Lines on a tkinter.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 imageand 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()