i'm trying to create a timer for smokes when playing a game, i want it to detect when i press "p" and start displaying a timer in the overlay. This is what i have so far:
from tkinter import *
import time
import keyboard
class Timer():
def __init__(self):
self.Time = 8
while self.Time != 0:
self.Label(self, text="Smoke 1:" self.Time)
self.Label.pack()
self.Time -= 0.10
self.Time = round(self.Time, 2)
time.sleep(0.1)
keyboard.add_hotkey('p', Timer())
keyboard.wait('esc')
root = Tk()
root.geometry("200x75")
root.overrideredirect(True)
root.wm_attributes("-topmost", True)
root.wm_attributes("-transparentcolor", "gray")
root.wm_attributes("-alpha", 0.5)
root.mainloop()
The self.Label doesn't work. can someone help me?
CodePudding user response:
You can use keyboard and threading to create a new tkinter label on a key press.
import tkinter as tk
import time
import threading
import keyboard
def thread(_root):
keyboard.add_hotkey('p', update_label, args=(_root,))
keyboard.wait('esc')
def update_label(_root):
tk.Label(_root, text=str(time.time())).pack()
root = tk.Tk()
label = tk.Label(root, text='')
label.pack()
listener = threading.Thread(target=thread, args=(root,))
listener.start()
root.mainloop()
