如何从PySimpleGUI多行输入框中提取每行内容?
解决PySimpleGUI多行输入框提取邮箱的问题
你的问题出在直接遍历values['-Input-']返回的字符串——这样会逐个遍历每个字符,而不是每行的邮箱。要正确提取每行的邮箱,按以下步骤修改:
关键修改点
- 按行分割输入内容:用字符串的
splitlines()方法,把多行输入拆成每行一个元素的列表。 - 过滤空行:避免处理用户不小心输入的空行。
- 把邮箱作为参数传给处理函数:你的
DeleteAccounts()需要知道要处理哪个邮箱,所以要把邮箱传进去。
修改后的代码片段
while True: event, values = window.read() if event == '-DEL-': deleteCheck = sg.popup_yes_no('Are you sure you want to delete these accounts?') if deleteCheck == 'Yes': # 按行分割输入内容,得到邮箱列表 email_list = values['-Input-'].splitlines() # 过滤掉空行和前后带空白的无效内容 email_list = [email.strip() for email in email_list if email.strip()] # 遍历每个邮箱并处理 for email in email_list: DeleteAccounts(email) else: break # 补充窗口关闭的处理逻辑 elif event == sg.WIN_CLOSED: break
补充说明
splitlines()会自动识别不同系统的换行符(Windows的\r\n或Linux/macOS的\n),不用手动处理。email.strip()用来去掉邮箱前后的空格、制表符等空白字符,避免无效的邮箱格式。- 你需要修改
DeleteAccounts函数的定义,让它接受一个邮箱参数,示例如下:
def DeleteAccounts(email): # 这里编写处理单个邮箱的逻辑,比如调用网站接口修改账户 print(f"正在处理邮箱: {email}")
内容的提问来源于stack exchange,提问作者Lane Anderson
相关产品推荐
相关产品推荐

