How to check if a button is pressed while running a program in python
Here is something you can try. The main
function is printing a number every second, and you can interrupt it by typing "s" + the Enter key :
import threading
import time
a = True
def main():
for i in range(10):
if a:
time.sleep(1)
print(i)
def interrupt():
global a # otherwise you can only read, and not modify "a" value globally
if input("You can type 's' to stop :") == "s":
print("interrupt !")
a = False
t1 = threading.Thread(target=main)
t1.start()
interrupt()
How check, if button pressed twice?
You're nearly there. Just use an if
/else
block and set press
to True
after printing:
import pygame
pygame.init()
screen = pygame.display.set_mode((200, 200))
run = True
press = False
while run:
for e in pygame.event.get():
if e.type == pygame.QUIT:
run = False
if e.type == pygame.KEYDOWN:
if e.key == pygame.K_RETURN:
if not press:
print('once')
else:
print('more than once')
press = True
screen.fill((30, 30, 30))
pygame.display.flip()
How to confirm if user has pressed on a button in pysimplegui
You can use variables or attribute button.metadata
to record the state clicked
for buttons. Initial value for each button is set by option metadata=False
in sg.Button
means not yet clicked. When button clicked, button.metadata
will be set to True
, it means this button clicked.
Here show the way to record the clicked state in button.metadata.
import PySimpleGUI as sg
items = [
"Automobile", "Chemical", "Engineering/Consulting", "FMCG",
"Healthcare/Hospitality", "Infrastructue", "IT/Comm/DC", "Manufacturing",
"Mines", "Energy/Oil & Gas", "Pharma", "Retail", "Cement",
]
length = len(items)
size = (max(map(len, items)), 1)
sg.theme("DarkBlue3")
sg.set_options(font=("Courier New", 11))
column_layout = []
line = []
num = 4
for i, item in enumerate(items):
line.append(sg.Button(item, size=size, metadata=False))
if i%num == num-1 or i==length-1:
column_layout.append(line)
line = []
layout = [
[sg.Text('Choose the Industry')],
[sg.Column(column_layout)],
[sg.Text(size=(50,1),key=('loaded'))],
[sg.Text('Enter Observation/Recommendation: ', size =(26, 1)), sg.InputText()],
[sg.Button("Predict Risk", bind_return_key=True)],
[sg.Text(size=(30,1),key=('output'))],
[sg.Text('If the above prediction is correct select \'yes\' else select the correct risk.')],
[sg.Button("Yes"),sg.Button("Low"),sg.Button("Medium")],
[sg.Text(size=(30,2),key=('trained'))],
[sg.Button("Exit"),sg.Button("Clear Fields")]
]
window=sg.Window("Risk Predictor", layout, use_default_focus=False, finalize=True)
for key in window.key_dict: # Remove dash box of all Buttons
element = window[key]
if isinstance(element, sg.Button):
element.block_focus()
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, 'Exit'):
break
elif event in items:
window[event].metadata = True
elif event == "Predict Risk" and window["Mines"].metadata:
print("Predict Risk for Mines")
window.close()
How do I check if a key has been pressed in TKinter outside the window?
You can register a callback whenever a key is pressed using .on_press()
from keyboard
module.
Below is an example:
import tkinter as tk
import keyboard
def on_key(event):
if event.name == "tab":
key_label.config(text="Click")
# clear the label after 100ms
root.after(100, lambda: key_label.config(text=""))
root = tk.Tk()
key_label = tk.Label(root, width=10, font="Arial 24 bold")
key_label.pack(padx=100, pady=50)
keyboard.on_press(on_key)
root.mainloop()
Python Kivy: How to check if a button is clicked or not?
Your add()
method is using self.i
, which will be the last value that self.i
was set to in the __init__()
method (2
). So you just need to modify your add()
method to something like:
def add(self, button):
id_of_button_pressed = button.id
print(id_of_button_pressed)
How to detect what button was clicked? (Pynput)
From the Documentation Here
CODEfrom pynput import mouse
def on_move(x, y):
print('Pointer moved to {0}'.format(
(x, y)))
def on_click(x, y, button, pressed):
print(button) # Print button to see which button of mouse was pressed
print('{0} at {1}'.format(
'Pressed' if pressed else 'Released',
(x, y)))
# Collect events until released
with mouse.Listener(
on_click=on_click
) as listener:
listener.join()
# ...or, in a non-blocking fashion:
listener = mouse.Listener(on_click=on_click)
listener.start()
As you can see, the button
parameter in the function on_click
tells you which button was pressed.
EDIT:
Here is how you may handle action based on which button of the mouse was pressed
def on_click(x, y, button, pressed):
btn = button.name
if btn == 'left':
print('Left if Pressed')
# ====== < Handle Pressed or released Event ====== > #
if pressed:
print('Do somethin when Pressed with LEft')
else:
print('LEFT is Released')
elif btn == 'right':
print('Right BTN was pressed ')
# ====== < Handle Pressed or released Event ====== > #
if not pressed:
print('right Button is released')
else:
pass
Related Topics
How to Remove Nan from List Python/Numpy
Finding Out Who Got the Highest Mark Among the Students
How to Start a Background Process in Python
Update Json Element in Json Object Using Python
How to Extract Hours and Minutes from a Datetime.Datetime Object
Removing Rows and Columns in Python CSV Module
Save Variables in Every Iteration of for Loop and Load Them Later
How to Extract Column Value Within Square Brackets in Pyspark
Tkinter: How to Use Threads to Preventing Main Event Loop from "Freezing"
Clicking Links With Python Beautifulsoup
How to Convert Datetime by Removing Nanoseconds
Json.Decoder.Jsondecodeerror: Expecting Value: Line 1 Column 1 (Char 0) Python
Python: Plotting Percentage in Seaborn Bar Plot
How to Get the Response Json Data from Network Call in Xhr Using Python Selenium Web Driver Chorme