Title: Turtle module transparency.
Type: enhancement Stage: resolved
Components: Library (Lib), Tkinter Versions: Python 3.5
Status: closed Resolution: third party
Dependencies: Superseder:
Assigned To: Nosy List: Eli Innis, r.david.murray, serhiy.storchaka, terry.reedy
Priority: normal Keywords:

Created on 2014-03-14 03:39 by Eli Innis, last changed 2014-03-15 21:31 by terry.reedy. This issue is now closed.

File name Uploaded Description Edit
1518814_771323949547840_717525448_n.jpg Eli Innis, 2014-03-14 03:39 Drawn in Python with no transparency.
Messages (5)
msg213515 - (view) Author: Eli Innis (Eli Innis) Date: 2014-03-14 03:39
Python's Turtle module doesn't support transparency.

I emailed the developer that was listed in the Turtle module code,
thinking that was the right way to get help updating it.

I then messaged Python's Facebook page looking for anybody
to help me with this issue.

I then gave a shout out to Jessica McKellar of the
Boston Python User Group, in hopes that she'd know what to do,
as she's more of a Python guru than I.

She recommended I submit a bug report.  Fancy that :)

I'm writing a book to teach the community art,
and I want to use Python as the core for the computer graphics lessons.

While I can create basic graphics, I feel totally constrained by the lack of of RGBA support.

What I'd like is for the Turtle module to default to RGB if three values are given in the tuple for color, but if an optional 4th value exists, then it'll use that value for alpha transparency.

I would think it would be OK if it follows a simlar convention:
0 - 255  (vs)  0 - 1.0
transparency range depending on how
the previous three values for color were inputted.

I looked into the Turtle code.
While it looks like it would be possible to impliment there,
I believe the bottleneck is the tkinter that it relies on.

I don't believe that tkinter handles transparency in Linux.

I wouldn't think this would be an unsurmountable hurdle,
as there's a similar Python + Tutle combo out there called Pynguin
that actually handles transparency.

I couldn't get as much out of that though,
because I'd have to battle with the interface.

I also considered other modules, such as matplotlib
or Pygame, but I think that's adding a layer of complexity
that I'd rather the end-user not have to deal with.

If anyone can take on this challenge and help out,
together, we can take Python graphics to the next level :D
msg213546 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2014-03-14 13:28
From a little researching it isn't clear whether it is just tkinter that doesn't support alpha, or if TK itself has issues...but I'm hoping it is just the former (I found discussions of alpha for images, and it sounds like the Tk canvas supports displaying such images, but I couldn't find anything definitive about non-image support for alpha values).  If Tk doesn't have full support, you'd have to take a step farther back and get the needed RGBA support into TK itself.  Using a graphics package other than TK is a non-starter for the standard library.

So, assuming TK supports it, this is two feature requests: tkinter alpha channel support, and Turtle RGBA support.

As a feature request it can only go into 3.5.  The tkinter piece should be split out into another issue, with this one depending on it.

There are some people interested in improving tkinter (mostly in the IDLE context currently), but unless you can submit patches yourself probably the best hope for this is for it to get picked up in the GSOC or OPW context as a student project.
msg213603 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2014-03-15 00:09
Serhiy, do you know about whether Tk (and tkinte) have any image alpha (transparency) support?
msg213643 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2014-03-15 06:36
Tk supports alpha only for photo images and as an attribute of top-level window. It doesn't support alpha component in colors.

       The desired color is specified with an object whose string  value
       must have one of the following forms:

       colorname           Any  of the valid textual names for a color defined
                           in the server's color database file, such as red or

       #RRRRGGGGBBBB       A numeric specification of the red, green, and blue
                           intensities to use to display the color.   Each  R,
                           G, or B represents a single hexadecimal digit.  The
                           four forms  permit  colors  to  be  specified  with
                           4-bit,  8-bit, 12-bit or 16-bit values.  When fewer
                           than 16 bits are provided for each color, they rep-
                           resent  the  most  significant  bits  of the color,
                           while the lower unfilled bits  will  be  repeatedly
                           replicated  from  the  available  higher bits.  For
                           example, #3a7 is the same as #3333aaaa7777.
msg213685 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2014-03-15 21:31
Closing due to 3rd party limitation, much as I wish it were not so.
Date User Action Args
2014-03-15 21:31:09terry.reedysetstatus: open -> closed
resolution: third party
messages: + msg213685

stage: test needed -> resolved
2014-03-15 06:36:57serhiy.storchakasetmessages: + msg213643
2014-03-15 00:09:47terry.reedysetnosy: + terry.reedy, serhiy.storchaka

messages: + msg213603
stage: test needed
2014-03-14 13:28:05r.david.murraysetversions: - Python 3.1, Python 2.7, Python 3.2, Python 3.3, Python 3.4
nosy: + r.david.murray

messages: + msg213546

components: + Library (Lib), - Extension Modules
type: behavior -> enhancement
2014-03-14 03:39:31Eli Inniscreate