Is there a simple way to wait for an event to happen?

Question:

Alright, so all I want is to wait for a function to be run and then continue the rest of the code. Basically, all I want to do is wait until the user presses a Tkinter button, and then after that start the rest of the code.

from tkinter import *

def function():
    [insert something here]



root=Tk()
btn1=Button(root, command=function)

Now wait until the user presses the button and then continue

print("Yay you pressed a button!")
Asked By: Keyboard's_Slave

||

Answers:

If you want to continue some code after pressing button then put this code inside function()

import tkinter as tk  # PEP8: `import *` is not preferred

# --- functions ---

def function():
    print("Yay you pressed a button!")
    # ... continued code ...
    
# --- main ---

root = tk.Tk()

btn1 = tk.Button(root, command=function)
btn1.pack()  # put button in window

root.mainloop()   # run event loop which will execute function when you press button

PEP 8 — Style Guide for Python Code


EDIT:

GUIs don’t work like input() which waits for user data. Button doesn’t wait for user’s click but it only inform mainloop what it has to display in window. And mainloop runs loop which gets key/mouse events from system and it checks which Button was clicked and it runs assigned function. GUI can’t stops code and wait for button because it would stop also other widgets in window and it would look like it frozen.

The same is in other GUIs – ie. PyQt, wxPython, Kivy – and other languages – ie. Java, JavaScript.

Answered By: furas
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.