# ========================================================= # Test: # 1. what type is the resulting b1 or b2 variables # 2. how to passing paramerters to button (or any widget) # event callback # --------------------------------------------------------- # What happens? Why? Name of the callback function? # --------------------------------------------------------- # How to test: # test 1: run code as is # test 2: switch button creation code (see ## in the code) # ========================================================= # Passing Argument to Callbacks. If you do this, Python # will call the callback function before creating the # widget, and pass the function's return value to Tkinter. # Tkinter then attempts to convert the return value to a # string, and tells Tk to call a function with that name # when the button is activated. # ========================================================= # --- import ---------------------------------------------- import sys if sys.version_info.major == 3: from tkinter import * else: from Tkinter import * # --- functions ------------------------------------------- ##def quit(): ## sys.exit() def quit(arg): print('quit callback received {}'.format(arg)) sys.exit() # --- main ------------------------------------------------ root = Tk() ##b1 = Button(root, text='B1', command=quit).grid(row=0, column=0) ##b1 = Button(root, text='B1', command=quit('B1')).grid(row=0, column=0) b1 = Button(root, text='B1', command=lambda: quit('B1')).grid(row=0, column=0) print('B1 type: {}'.format(type(b1))) ##b2 = Button(root, text='B2', command=quit) ##b2 = Button(root, text='B2', command=quit('B2')) b2 = Button(root, text='B2', command=lambda: quit('B2')) b2.grid(row=0, column=1) print('B2 type: {}'.format(type(b2))) root.mainloop()