Isai writes:
I am having trouble with this code in page 176:
from tkinter import * colorchooser.askcolor()
When I load it into IDLE, I get a blank canvas, and I can't close it, I have to restart the shell.
I have installed the proper ActiveTcl version (8.5), and no longer get the message giving me errors on startup.
When I run the previous code I was playing with (page 174), the canvas pops up and it all works again. Weirdly enough, the color picker pops up unprompted! I noticed that it does not bring up any buttons that appear in your book: [OK] [Cancel].
That's a bit of a gap in the book, because it doesn't make it clear that you need to create an instance of the top-level Tk widget first, before running that particular example (using tk = Tk()
).
So the first time you run this function: colorchooser.askcolor()
, it's hanging, waiting for something that isn't there yet. Then you run the code on the previous page (which does create the Tk object), and that's when you suddenly get a popup dialog with the colorchooser in it.
So the code should really look like this:
from tkinter import *
from tkinter import colorchooser
tk = Tk()
tk.update()
colorchooser.askcolor()
When you run that, you should then get the colorchooser dialog immediately.
Update #1: One step I missed, is a call to tk.update()
, which forces tk to update the screen. Once that's executed, the chooser will appear. The example is updated above.
Update #2: On Windows you need to explicitly import colorchooser
for the code to work properly (example updated again).