PySimpleGUI报错AttributeError: tuple对象无ParentContainer属性求助
PySimpleGUI布局错误排查与修正
你遇到的AttributeError: 'tuple' object has no attribute 'ParentContainer'是因为定义元素组时错误使用逗号分隔,导致变量变成了元组,而PySimpleGUI的布局要求每行是元素组成的列表,而非元组。比如tm_number = sg.Text(...), sg.Input(...)这种写法会创建元组,而非列表,当把元组放到布局中时,PySimpleGUI会把它当成单个元素处理,从而引发错误。
修正后的完整代码
import PySimpleGUI as sg # 用列表包裹每行元素,去掉多余逗号 tm_number = [sg.Text("Technical Manual Number:", font=(24,24)), sg.Input(key='tm_number', font=(24,24), size=(48,1))] review = [sg.Text("Type of Review:", font=(24,24)), sg.Input(key='review', font=(24,24), size=(12,1))] pages = [sg.Text("Number of Pages: ", font=(24,24)), sg.Input(key='pages', font=(24,24), size=(6,1))] submission_date = [sg.Text("Date of Submission: ", font=(24,24)), sg.Input(key='submission_date', font=(24,24), size=(12,1))] writer = [sg.Text("Writer's Name: ", font=(24,24)), sg.Input(key='writer', font=(24,24), size=(24,1))] col1 = [review, submission_date] col2 = [writer, pages] layout = [[sg.Text("Writer's Submission Form", font=(48,48))], tm_number, [sg.Column(col1), sg.Column(col2)], [sg.Push(), sg.Button("SUBMIT FOR REVIEW", size=(24,1), font=24)]] window = sg.Window("Technical Manual Engineering Review (TMER)", layout) event, values = window.read() window.close()
关键修改说明
- 所有元素组改用列表包裹,去掉末尾逗号,避免生成元组。
- 调整
size参数:原size=(48,24)会导致输入框异常高大,改为size=(48,1)符合常规UI尺寸。 - 简化列布局:
col1 = [review, submission_date]无需额外嵌套[review],因为review本身就是一行元素的列表。 - 添加
sg.Push()实现提交按钮居右,满足“底部右下角放置提交按钮”的需求。 - 修正
window.close为window.close(),正确调用窗口关闭方法。
内容的提问来源于stack exchange,提问作者GKnight74
相关产品推荐
相关产品推荐

