使用PySimpleGUI将窗口划分为列会出现错误

时间:2019-07-17 10:36:50

标签: python pysimplegui

我正试图构建一个显示两列的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的定义中?

1 个答案:

答案 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()