我正试图构建一个显示两列的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()参数必须是可迭代的,而不是Frame
该如何解决?
我在考虑是否有可能先使用Frame
定义列,然后将这些列放入layout
的定义中?
答案 0 :(得分:2)
您必须使用[[ ]]
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()