使用 PySimpleGUI 在列中划分 window 会出错

Using PySimpleGUI to divide the window in columns gives an error

我正在尝试构建一个显示两列的 GUI: 一列将包含所有输入字段和列表框,第二列将显示来自 pandas dataframe.

的一些数据

我认为使用 Frames 执行此操作是个好主意,但我 运行 在尝试创建 Frame:

时遇到错误
layout = [sg.Frame('Input data',[[
          sg.Text('Input:'),      
          sg.Input(do_not_clear=False),      
          sg.Button('Read'), sg.Exit(),
          sg.Text('Alternatives:'),
          sg.Listbox(values=('alternatives...', ''), size=(30, 2), key='_LISTBOX_')]])] 

结果:

TypeError: AddRow() argument after * must be an iterable, not Frame

如何解决这个问题?

我在想是否可以先定义列,使用Frame,然后将列放入layout的定义中?

你必须使用[[ ]]

layout = [[

]]

外部 [ ] 表示所有数据,内部 [ ] 表示第一行 - 即使您只需要一行。


工作示例:

import PySimpleGUI as sg

layout = [[
    sg.Frame('Input data',[[
          sg.Text('Input:'),      
          sg.Input(do_not_clear=False),      
          sg.Button('Read'), sg.Exit(),
          sg.Text('Alternatives:'),
          sg.Listbox(values=('alternatives...', ''), size=(30, 2), key='_LISTBOX_')
    ]])
]]

window = sg.Window('App', layout)
event, values = window.Read()
window.Close()