""" Similar to gui1, but use classes so each window has own state info. Caution: this GUI may grow until you press Stop or kill its window! """ from tkinter import * import random class MyGui: """ A GUI with buttons that change color and make the label grow """ colors = ['blue', 'green', 'orange', 'red', 'brown', 'yellow'] def __init__(self, parent, title='popup'): parent.title(title) self.growing = False self.fontsize = 10 self.lab = Label(parent, text='Hack2', fg='white', bg='navy') self.lab.pack(expand=YES, fill=BOTH) Button(parent, text='Hack', command=self.reply).pack(side=LEFT) Button(parent, text='Grow', command=self.grow).pack(side=LEFT) Button(parent, text='Stop', command=self.stop).pack(side=LEFT) def reply(self): "change the button's color at random on Hack presses" self.fontsize += 5 color = random.choice(self.colors) self.lab.config(bg=color, font=('courier', self.fontsize, 'bold italic')) def grow(self): "start making the label grow on Grow presses" self.growing = True self.grower() def grower(self): "multiple presses schedule multiple growers" if self.growing: self.fontsize += 5 self.lab.config(font=('courier', self.fontsize, 'bold')) self.lab.after(500, self.grower) def stop(self): "stop all button grower loops on Stop presses" self.growing = False class MySubGui(MyGui): colors = ['black', 'purple'] # Customize to change color choices MyGui(Tk(), 'main') MyGui(Toplevel()) MySubGui(Toplevel()) mainloop()