[Tutor] Tkinter draw line segments

Phil phillor9 at gmail.com
Wed Mar 30 19:17:21 EDT 2022


On 31/3/22 03:21, Peter Otten wrote:
> On 30/03/2022 17:27, Peter Otten wrote:
>
>> I'd go about it a bit differently. When you draw all segments separately
>> you can remember them by their ids. To display the desired digits you
>> can hide/display segments as needed. A complete example:

Thank you Peter and Dennis, once again you've given me something to 
think about.

I abandoned my initial design and this is how I managed to solve the 
problem:

seg = {0: (20, 20, 40, 20),
        1: (44, 24, 44, 44),
        2: (44, 48, 44, 68),
        3: (20, 72, 40, 72),
        4: (16, 48, 16, 68),
        5: (16, 24, 16, 44),
        6: (20, 46, 40, 46)
        }


digits = {0: ('lime', 'lime', 'lime', 'lime', 'lime', 'lime', 'black'),
        1: ('black', 'lime', 'lime', 'black', 'black', 'black', 'black'),
        2: ('lime', 'lime', 'black', 'lime', 'lime', 'black', 'lime'),
        3: ('lime', 'lime', 'lime', 'lime', 'black', 'black', 'lime'),
         etc

Inside an after loop I have:

         for i in range(7): # yes I know I should use for s in seq. It's 
a hard-to-break habit
             self.canvas.create_line(seg[i], width=4, 
fill=digits[number][i])

number is incremented every second.

The digits are displayed on a black rectangle and, even if I say so 
myself, the result is quite realistic.


>
> Shortly after hitting send I had a Eureka moment: use tags!

I've not come across tags until now so that'll probably keep me busy for 
the rest of the day.

-- 

Regards,
Phil



More information about the Tutor mailing list