【问题标题】:Python PySimpleGUI event does not fire from string listPython PySimpleGUI 事件不会从字符串列表中触发
【发布时间】:2021-05-11 12:06:20
【问题描述】:

    file_list = []
            for file in glob.glob("*.txt"):
                file_list.append(Path(file).stem)        
    
    ...(code making buttons here doesn't effect while statement)
    
    
    while True:
                event, values = button_window.read()
                print(event)
                if event == sg.WIN_CLOSED:
                    break
                elif event == any(file_list[0:len(file_list)]): #(also tried a list comprehension here too)
                    open_file = open(f"{event}.txt","r+")
                    read_text = open_file.read()
                    print(read_text)
                    open_file.close()
                    break

如果我将事件更改为列表中的字符串,它会触发。所以我相信这是我的列表理解/这里的任何陈述。

【问题讨论】:

  • event == any(file_list[0:len(file_list)])event == any(file_list) 相同。在您的情况下,any(file_list[0:len(file_list)]) 将得到 True 如果找到任何 txt 文件,False 如果没有找到 txt 文件。因此,您的事件仅适用于 True 情况,event == True,并且对于大多数情况而言似乎不是 true。
  • 感谢 Jason,通过将其更改为 'in' 运算符来意识到我的错误,它现在可以正常工作了 :)

标签: python list-comprehension pysimplegui


【解决方案1】:

我用 'in' 运算符修正了这个愚蠢的错误,这完全让我忘记了。所以 elif 语句现在变为:


    elif event in file_list:
            open_file = open(f"{event}.txt","r+")
            read_text = open_file.read()
            print(read_text)
            open_file.close()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多