无法通过 Python/PySimpleGUI 的多个用户输入捕获 API 数据
Unable to capture API data with multiple user inputs with Python/PySimpleGUI
我正在编写一个 python 脚本,它可以从 themoviedb.org 中提取电视剧集信息。
我有一个 for 循环,它应该收集输入到我用 PySimpleGUI 创建的 GUI InputText 字段中的所有剧集。当我输入多个剧集时,例如第 1、2、3 集,它说脚本已完成但没有任何反应。
这是设置输入字段的代码,季节和目录字段按预期工作。
layout = [[sg.Text("Hello, please select the Show, Season, Episodes, and Directory.")]
,[sg.Text('Season:'), sg.InputText('', size=(10, 1), key='input_season')]
,[sg.Text('Episodes:'), sg.InputText('', size=(10, 1), key='input_episode')]
,[sg.Column(file_list_column)]
,[sg.Button("OK")]]
这是我从这些输入字段中获取值的代码。
while True:
event, values = window.read()
# End program if user closes window or
# presses the OK button
if event == "OK" or event == sg.WIN_CLOSED:
Season_Number = values['input_season']
Episode_Number = values['input_episode'].split(',')
Episode_String = str(Episode_Number)
file_location = values['FOLDER']
break
window.close()
最后,这是每集的循环。
episode_list = [Episode_String]
for episode in episode_list:
text = get_data(API_key, TV_ID, Season_Number, episode)
if text == "error":
break
write_file(text)
在代码中我有一些打印语句,当我打印 Episode_String 变量时它显示以下 ['1', '2'],如果我将其复制并粘贴到 [Episode_String] 在上面的代码中,脚本运行两个剧集都没有问题。
我的问题似乎是从该输入框中获取值并允许循环分别解析每个剧集。
*提交后,我想添加 API URL 的打印件,当我有多个剧集时它会被发送,这似乎是问题所在,因为这是 URL 正在发送。我已经从 URL、https://api.themoviedb.org/3/tv/114505/season/1/episode/%5B'1',%20'2'%5D?api_key=zzz&language=en-US&append_to_response=images 中删除了我的 API 密钥
似乎当前代码甚至不适用于一集,因为它将数据添加到 URL
如有任何帮助,我们将不胜感激。
如果您在字段 input_episode
中输入 1,2
,则
Episode_Number = '1,2'.split(',') # ['1', '2'] - two-string list
Episode_String = str(Episode_Number) # "['1', '2']" - str
episode_list = [Episode_String] # ["['1', '2']"] - one-string list
所以你不能用[Episode_String]
,只能用Episode_Number
episode_list = Episode_Number
对于 print("['1', '2']")
,您将得到 ['1', '2']
的输出,它不重要,它是一个列表。
我正在编写一个 python 脚本,它可以从 themoviedb.org 中提取电视剧集信息。
我有一个 for 循环,它应该收集输入到我用 PySimpleGUI 创建的 GUI InputText 字段中的所有剧集。当我输入多个剧集时,例如第 1、2、3 集,它说脚本已完成但没有任何反应。
这是设置输入字段的代码,季节和目录字段按预期工作。
layout = [[sg.Text("Hello, please select the Show, Season, Episodes, and Directory.")]
,[sg.Text('Season:'), sg.InputText('', size=(10, 1), key='input_season')]
,[sg.Text('Episodes:'), sg.InputText('', size=(10, 1), key='input_episode')]
,[sg.Column(file_list_column)]
,[sg.Button("OK")]]
这是我从这些输入字段中获取值的代码。
while True:
event, values = window.read()
# End program if user closes window or
# presses the OK button
if event == "OK" or event == sg.WIN_CLOSED:
Season_Number = values['input_season']
Episode_Number = values['input_episode'].split(',')
Episode_String = str(Episode_Number)
file_location = values['FOLDER']
break
window.close()
最后,这是每集的循环。
episode_list = [Episode_String]
for episode in episode_list:
text = get_data(API_key, TV_ID, Season_Number, episode)
if text == "error":
break
write_file(text)
在代码中我有一些打印语句,当我打印 Episode_String 变量时它显示以下 ['1', '2'],如果我将其复制并粘贴到 [Episode_String] 在上面的代码中,脚本运行两个剧集都没有问题。
我的问题似乎是从该输入框中获取值并允许循环分别解析每个剧集。
*提交后,我想添加 API URL 的打印件,当我有多个剧集时它会被发送,这似乎是问题所在,因为这是 URL 正在发送。我已经从 URL、https://api.themoviedb.org/3/tv/114505/season/1/episode/%5B'1',%20'2'%5D?api_key=zzz&language=en-US&append_to_response=images 中删除了我的 API 密钥 似乎当前代码甚至不适用于一集,因为它将数据添加到 URL
如有任何帮助,我们将不胜感激。
如果您在字段 input_episode
中输入 1,2
,则
Episode_Number = '1,2'.split(',') # ['1', '2'] - two-string list
Episode_String = str(Episode_Number) # "['1', '2']" - str
episode_list = [Episode_String] # ["['1', '2']"] - one-string list
所以你不能用[Episode_String]
,只能用Episode_Number
episode_list = Episode_Number
对于 print("['1', '2']")
,您将得到 ['1', '2']
的输出,它不重要,它是一个列表。