"""
Example showing for tkinter and ttk:
  -- ttk.Label
  -- ttk.Button
  -- ttk.Frame
  -- Associating a Button with a CALLBACK function

Authors: David Mutchler and his colleagues
         at Rose-Hulman Institute of Technology.
"""

import tkinter
from tkinter import ttk
import random


def main():
    # Root (main) window
    root = tkinter.Tk()
    root.title("Hello!")

    # Frame
    frame1 = ttk.Frame(root)
    frame1.grid()

    # Label
    label = ttk.Label(frame1, text="This is a Label above a Button")
    label.grid()

    # Two buttons
    change_title_button = ttk.Button(frame1, text="Change the Title (above)")
    change_title_button.grid()
    change_title_button["command"] = lambda: change_title(root)

    quit_button = ttk.Button(frame1, text="Quit")
    quit_button.grid()
    quit_button["command"] = lambda: close_window(root)

    # Another Label, with its text set another way
    label2 = ttk.Label(frame1)
    label2["text"] = "Later, we will put Labels BESIDE Buttons"
    label2.grid()

    root.mainloop()


def change_title(root):
    # Make a new 8-letter title chosen randomly from 'A' to 'Z'.
    new_title = ""
    for _ in range(8):
        new_title = new_title + chr(ord("A") + random.randrange(26))

    root.title(new_title)


def close_window(root):
    root.destroy()


# -----------------------------------------------------------------------------
# Calls  main  to start the ball rolling.
# -----------------------------------------------------------------------------
main()