I want to have a program that uses Tkinter to display a window.
If the user selects an option, then I want to destroy that window and
then display a second window.
In turn, the user can select an option to change back to the first
window and I want to destroy that window and then display the first again.
I have pasted my code below. The window is successfully created.
However, I can't figure out the correct way to destroy it.
In my first attempt, "window1" is not defined when I go to destroy it
and I am not sure how to make "window1" global or what.
The error is displayed at the bottom of the program listing.
Jim
------------------------------------------------------------------------------------------
from Tkinter import *
class display_Colour_Selector_window():
def __init__(self):
window1 = Tk()
window1.title("Colour Selector")
menubar = Menu(window1)
# create pulldown menus
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Colour Selector",
command=change_to_Colour_Selector)
editmenu.add_command(label="Colour Picker",
command=change_to_Colour_Picker)
menubar.add_cascade(label="Edit", menu=editmenu)
# display the menu
window1.config(menu=menubar)
class display_Colour_Picker_window():
def __init__(self):
# The second window will be used for the "Colour Picker" which
# allows the User to pick colours from a colour map.
window2 = Tk()
window2.title("Colour Picker")
menubar = Menu(window2)
# create pulldown menus
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Colour Selector",
command=change_to_Colour_Selector)
editmenu.add_command(label="Colour Picker",
command=change_to_Colour_Picker)
menubar.add_cascade(label="Edit", menu=editmenu)
# display the menu
window2.config(menu=menubar)
def change_to_Colour_Selector():
display_Colour_Picker_window.window2.destroy
display_Colour_Selector_window()
def change_to_Colour_Picker():
display_Colour_Selector_window.window1.destroy
display_Colour_Picker_window()
def hello():
print "hello!"
#--------------------------------------------------------------------#
# The program starts here #
#--------------------------------------------------------------------#
display_Colour_Selector_window()
# To run this from IDLE, I will just comment out the mainloop()
# because IDLE is written in Tkinter and actually has its own mainloop()
# running, which thoroughly confuses my own program.
# mainloop()
-----------------------------------------------------------------------------------------------
The error:
IDLE 1.2.1 ==== No Subprocess ====
>>>
>>> Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
return self.func(*args)
File "D:/ComputerScienceProgramming/test.py", line 53, in
change_to_Colour_Picker
display_Colour_Selector_window.window1.destroy
AttributeError: class display_Colour_Selector_window has no attribute
'window1'
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor