如何为魔方计时器添加长按空格键0.5秒启动功能?
魔方计时器长按启动功能实现方案
要实现「长按空格键至少0.5秒后松开才启动计时器」的功能,只需在原有代码中添加按压时间记录和时长判断逻辑,具体修改如下:
修改点说明
- 在类初始化时新增属性,用于存储空格键按下的时间戳
- 按下空格键时记录当前时间
- 松开空格键时计算按压时长,仅当时长≥0.5秒时才启动计时器
修改后的完整代码
import tkinter as tk import time import keyboard class RubiksTimerApp: def __init__(self, root): self.root = root self.root.title("Rubik's Cube Timer") self.start_time = None self.running = False self.elapsed_time = 0 self.space_press_time = None # 新增:记录空格键按下的时间 self.timer_label = tk.Label(root, text="0.000", font=("Helvetica", 72)) self.timer_label.pack(pady=30) keyboard.on_press_key("space", self.space_pressed) keyboard.on_release_key("space", self.space_released) self.root.geometry("400x300") self.root.mainloop() def space_pressed(self, event): if not self.running: self.start_time = None self.timer_label.config(text="0.000") self.space_press_time = time.time() # 记录按下时间 def space_released(self, event): if not self.running: # 计算按压时长 press_duration = time.time() - self.space_press_time # 判断是否满足长按要求 if press_duration >= 0.5: self.running = True self.start_time = time.time() self.elapsed_time = 0 self.update_timer() else: self.running = False elapsed_time = time.time() - self.start_time self.elapsed_time += elapsed_time def update_timer(self): if self.running: current_time = time.time() - self.start_time + self.elapsed_time self.timer_label.config(text=f"{current_time:.3f}") self.root.after(10, self.update_timer) if __name__ == "__main__": root = tk.Tk() app = RubiksTimerApp(root)
逻辑说明
- 按下空格时,重置计时器显示并记录当前时间到
self.space_press_time - 松开空格时,计算当前时间与
self.space_press_time的差值(即按压时长) - 只有当时长≥0.5秒时,才触发计时器启动逻辑,否则不执行任何操作
内容的提问来源于stack exchange,提问作者TaranJS
相关产品推荐
相关产品推荐

