"""
Example showing for tkinter and ttk how to:
  -- Put an IMAGE on a Button (or anything else).
  -- Also have text if you want.

Note: The image file for tkinter/ttk must be a GIF (or one of several
      other unhelpful formats).  PIL -- Python Imaging Library --
      is the standard library for converting images in Python.
      An unofficial port of PIL to Python 3 is available on the
      course web site (under the Graphics section) of Resources.

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

import tkinter
from tkinter import ttk


def main():
    root = tkinter.Tk()

    main_frame = ttk.Frame(root, padding=20)
    main_frame.grid()

    # The image file must be GIF (or one of several other unhelpful
    # formats). To convert a JPG or anything else, use an outside tool.
    # Note that the image file must be in the same folder as this
    # module, if you use this way to refer to the image file.
    photo = tkinter.PhotoImage(file='tkinter_mqtt_ev3.gif')

    button1 = ttk.Button(main_frame, image=photo)
    # The next line is necessary when your root.mainloop() call is outside the 
    # current method. Tkinter has a bug that makes it think the image is ready for 
    # garbage collection, which makes the image fully transparent. 
    # See: http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm
    button1.image = photo
    button1.grid()
    button1['command'] = lambda: print('hello')

    root.mainloop()


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