PySimpleGUI编写GUI报'tuple' object is not callable错误求助
'tuple' object is not callable 报错修复(PySimpleGUI图片查看器) 错误原因
核心报错由布局写法错误直接触发,代码中共有3处会影响运行的问题:
- 元组被错误当成可调用对象:定义
file_list_column时写了(sg.Text(...), sg.In(...), sg.FolderBrowse(),)(sg.Listbox(...))结构,Python会把括号前的元组识别为函数,尝试传入后面的Listbox对象执行,元组本身不支持调用,直接抛出你遇到的'tuple' object is not callable错误。PySimpleGUI布局要求同一层级的元素用列表[]包裹,行、列嵌套都通过列表嵌套实现,不能用元组直接拼接后加括号跟元素。image_viewer_column的定义也存在同类元组叠写问题。 - 类名拼写错误:
sg.Colmn应为sg.Column,sg.VSeperator应为sg.VSeparator,拼写错误会触发属性不存在的后续报错。 - 方法调用遗漏括号:末尾
window.close是类方法,必须加括号写成window.close()才会真正执行窗口关闭逻辑。
修正后可运行代码
import PySimpleGUI as sg import os.path # 左侧文件列表列:用列表按行包裹元素 file_list_column = [ [sg.Text("Image Folder"), sg.In(size=(25,1), enable_events=True, key="-FOLDER-"), sg.FolderBrowse()], [sg.Listbox(values=[], enable_events=True, size=(40,20), key="-FILE LIST-")] ] # 右侧图片预览列:用列表按行包裹元素 image_viewer_column = [ [sg.Text("Choose an image from the list on the left:")], [sg.Text(size=(40,1), key="-TOUT-")], [sg.Image(key="-IMAGE-")] ] # 全局布局:修正类名拼写错误 layout= [ [sg.Column(file_list_column),sg.VSeparator(),sg.Column(image_viewer_column)] ] window = sg.Window("Image Viewer", layout) while True: event, values = window.read() if event == "Exit" or event == sg.WIN_CLOSED: break # 可在此处补充文件夹选择、图片加载的事件处理逻辑 # 补全方法调用括号 window.close()
补充说明
当前代码只搭建了基础UI框架,还未实现文件夹选择后刷新文件列表、点击列表项加载预览图片的业务逻辑,后续可在事件循环内补充对应逻辑即可。
内容的提问来源于stack exchange,提问作者NordinWaziry
相关产品推荐
相关产品推荐

