基于PySimpleGUI实现用户输入复读程序的技术咨询
基于PySimpleGUI的输入复读实现方案
你的思路完全可行——用单独列表存储时间间隔是合理的,甚至可以进一步优化为将输入内容与对应时间间隔配对存储,这样数据关联更清晰,维护起来更方便。下面是具体实现方案:
核心思路
- 记录输入与时间间隔:每次用户提交输入时,记录当前时间戳,计算与上一次输入的时间差(即间隔),将输入内容和该间隔存入列表(第一个输入的间隔可设为0,因为没有前置输入)。
- 还原复读间隔:复读时遍历存储的内容,先输出内容,再根据对应的间隔等待,完全还原输入时的节奏。
完整代码示例
import PySimpleGUI as sg import time from datetime import datetime # 初始化存储列表:每个元素是 (输入内容, 时间间隔) input_records = [] last_input_time = None # 构建GUI布局 layout = [ [sg.Input(key="-INPUT-", size=(30, 1)), sg.Button("提交"), sg.Button("开始复读")], [sg.Multiline(key="-OUTPUT-", size=(50, 10), disabled=True)] ] window = sg.Window("输入复读器", layout) while True: event, values = window.read() if event == sg.WIN_CLOSED: break elif event == "提交": input_text = values["-INPUT-"].strip() if not input_text: continue current_time = datetime.now() # 计算与上一次输入的时间间隔(秒) if last_input_time is None: interval = 0.0 else: interval = (current_time - last_input_time).total_seconds() # 记录内容和间隔 input_records.append((input_text, interval)) last_input_time = current_time # 清空输入框,反馈已记录 window["-INPUT-"].update("") window["-OUTPUT-"].print(f"已记录: {input_text} (间隔: {interval:.2f}秒)") elif event == "开始复读": if not input_records: window["-OUTPUT-"].print("无记录内容可复读!") continue window["-OUTPUT-"].print("=== 开始复读 ===") # 遍历记录,按间隔输出 for text, interval in input_records: # 第一个内容直接输出,后续先等待间隔再输出 if interval > 0: time.sleep(interval) window["-OUTPUT-"].print(f"复读: {text}") window["-OUTPUT-"].print("=== 复读结束 ===") window.close()
关键细节说明
- 时间间隔计算:用
datetime.now()获取当前时间,通过时间差的total_seconds()得到精确到秒的间隔,确保复读节奏和输入一致。 - 数据存储:用元组
(内容, 间隔)存入列表,相比两个独立列表,能避免内容和间隔的索引错位问题,更可靠。 - GUI交互:禁用输出框防止误编辑,提交后清空输入框提升用户体验,复读时的反馈清晰直观。
内容的提问来源于stack exchange,提问作者user20753874
相关产品推荐
相关产品推荐

