当我跳过列表的第一个元素时,PySimpleGUI 表索引出错

PySimpleGUI Table index out of error when I skip first element of list

提问人:schwitzky 提问时间:6/13/2023 更新时间:6/14/2023 访问量:30

问:

我正在用 PySimpleGUI 制作一个小程序,遇到了一个非常奇怪的问题,对我来说没有任何意义。

def open_view_window(date):

    calendar_dates = db_session.factory().query(Calendar.full_date).all()
    calendar_dates = [ e[0] for e in calendar_dates ]
    calendar_dates.sort(key=lambda date: datetime.strptime(date, "%d-%m-%Y"))
    calendar_dates.insert(0, "")
    print(calendar_dates)
    tag_names = db_session.factory().query(Tag.name).all()
    tag_names = [ e[0] for e in tag_names ]
    tag_names.insert(0, "")
    print(tag_names)

    if date in calendar_dates:
        default_val = date
    else:
        default_val = calendar_dates[1]

    view_layout = [[sg.Text('Filter by:', key='FILTER')],
                   [sg.Text('Date:'), sg.Combo(values=calendar_dates, default_value=default_val, readonly=True), sg.Text('Tag:'), sg.Combo(values=tag_names, default_value=tag_names[0], readonly=True)],
                   [sg.Table(values=calendar_dates[1:])]]

正如你在上面的代码中看到的,我有一个列表,它是我从数据库的内容中创建的。对列表进行排序后,我在列表的第一个位置插入一个新的空元素。 但是当我尝试将列表作为参数传递给 PySimpleGUI Table 元素并跳过第一个元素时,因为它对我的情况没有用,我收到以下错误:calendar_dates[1:]

_tkinter.TclError: Column index 1 out of bounds

当我试图找出我做错了什么时,我更改了列表以跳过最后一个元素而不是第一个元素,并且出于某种原因,这起作用了。[:1]

请帮忙,我做错了什么?

list 元素 pysimplegui skip

评论

0赞 Mike from PSG 6/13/2023
您需要在布局的 Table elem 中指定其他 parms。查看 Table 元素示例。尝试在表中添加每列一个字符串的 parm。headings

答:

1赞 Jason Yang 6/13/2023 #1

设置 Table 元素的标题,否则将出现异常

_tkinter.TclError: Column index ? out of bounds

尝试删除与您的问题无关的代码,在此处为您的问题简化代码。

import PySimpleGUI as sg

data = [['06/10/23'], ['06/11/23'], ['06/12/23'], ['06/13/23']]
calendar_dates = [date[0] for date in data]
data.insert(0, [""])

sg.set_options(font=("Courier New", 12))
layout = [
    [sg.Text('Filter by:', key='FILTER')],
    [sg.Text('Date:'), sg.Combo(values=calendar_dates)],
    [sg.Table(values=data[1:], headings=["Date"], auto_size_columns=False, col_widths=[10], expand_x=True, justification='center')],
]
sg.Window('Demo', layout).read(close=True)

评论

0赞 Mike from PSG 6/14/2023
该表应为列表列表(二维数组)。
1赞 Jason Yang 6/14/2023
更新如上。