2

我正在尝试构建一个显示两列的 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

4

1 回答 1

4

你必须使用[[ ]]

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()
于 2019-07-17T11:09:11.243 回答