import tkinter as tk root = tk.Tk() handler_called = False x = y = 0 def prt(): global handler_called print('handler called') # for this demo only, not in unittest handler_called = True def ev(e): global x, y print(e.x, e.y) # see comment above x, y = e.x, e.y button = tk.Button(root, text='Click', command=prt) # button command fires when button is released button.place(x=20, y=20) button.bind('', ev) button.update() # required for following button.event_generate('', x=1, y=1) # changes x,y. assert x == y == 1 button.event_generate('', x=1, y=1) # does not fire command assert handler_called == False button.invoke() # does fire command assert handler_called == True etext = tk.StringVar('') entry=tk.Entry(root, textvariable=etext) entry.place(x=20, y=50) entry.focus_force() # required for text entry entry.update() entry.event_generate('') # inserts 'a' # Can Use .insert or a string varible to insert or set multiple chars, # but keys like 'Home' have no text equivalent. assert entry.get() == 'a' assert etext.get() == 'a' entry.insert('insert', 'bc') assert entry.get() == 'abc' etext.set('def') assert etext.get() == 'def'