Clickable hyperlinks

Deborah Swanson python at
Thu Jan 5 17:29:00 EST 2017

Terry Reedy wrote, on January 04, 2017 10:18 PM
> On 1/5/2017 12:11 AM, Deborah Swanson wrote:
> > Terry Reedy wrote, on January 04, 2017 3:58 PM
> >> To have a string interpreted as a clickable link, you send the
string to
> >> software capable of creating a clickable link, plus the information

> >> 'this is a clickable link'*.  There are two ways to tag a string as
> >> link.  One is to use markup around the url in the string itself. 
> >> '<url>' and html are example.  Python provides multiple to make
> >> easy. The other is to tag the string with a separate argument.  
> >> Python provides tkinter, which wraps tk Text widgets, which have a 
> >> powerful tag system.  One can define a Link tag that will a) cause
> >> to be displayed, for instance, blue and underlined and b) cause
clicks on
> >> the text to generate a web request.  One could then use
> >> mytext.insert('insert', '', Link) Browser 
> >> must do something similar when they encounter when they encounter 
> >> html link tags.
> >
> > I've actually moved on from my original question to one of opening a

> > url in a browser with python, which seems to be a much more easily 
> > achieved goal.
> > But someone else mentioned tkinter, and I looked at it awhile ago
> > haven't used it for anything. That really could be the way to go if 
> > you want to make clickable links, although you still need some kind
> > internet engine to open the url in a browser.
> IDLE allows a user to add help menu entries that, when clicked on,
> either a local file or an internet url.  For instance, adding the pair

> 'Pillow' and "" in > the
> dialog adda "Pillow" to the help menu (after the standard stuff). 
> Clicking on Help => Pillow opens 
> "" in the default browswer. 
> IDLE just used the webbrowser module to do this.  No use re-inventing 
> the wheel.  If instead "Pillow" were a link in text, the click handler

> should do something similar.

Yes, unless someone suggests something better, the webbrowser module
looks like the way to go for opening urls in a browser.
> > You say, "There are two ways to tag a string as a link. One is to
> > markup around the url in the string itself. '<url>' and html are 
> > examples.  Python provides multiple ways to make this easy."
> >
> > Can you tell me where I'd begin to look for these? Are they in the 
> > core language, or in packages?
> I was referring to using either % or .format string formatting.  Both 
> are in the core and described somewhere in the Library manual.  '%' 
> should be in the Symbols page of the Index and 'format' on 
> the 'F' page.
> -- 
> Terry Jan Reedy

I looked up % in the Symbols page, but I didn't see any specifier
related to urls. It would be nice if there was something like a %u for
url format, but it isn't in there.

I also tried

but got 'SyntaxError: invalid syntax', with the red arrow pointing at
the first angle bracket. I also tried

and got the same syntax error, but I'm not sure if that's how you meant
html should be used.

I also tried to look up 'format', but there's no such entry in the
Index. There are a lot of entries that begin with 'format', but none of
them mention urls or anything link related. 'format_field()
(string.Formatter method)' looked like a possibility, but again, I
didn't see anything to format a link with. Maybe I didn't look hard
enough, or didn't see something that _would_ work.

As I've said, at this point I've moved on to directly opening a url in a
browser with the webbrowser module. All I originally wanted to do was be
able to open a url without leaving my IDE while I was debugging data
that has urls in it. Clickable links are really just eye candy that I
don't need if I can get the same result programmatically. But I was
curious whether there are any ways to tag a string as a link in a print
statement. If there are, I didn't find any, but thanks for your


More information about the Python-list mailing list