提问人:schwitzky 提问时间:6/13/2023 更新时间:6/14/2023 访问量:30
当我跳过列表的第一个元素时,PySimpleGUI 表索引出错
PySimpleGUI Table index out of error when I skip first element of list
问:
我正在用 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]
请帮忙,我做错了什么?
答:
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
更新如上。
评论
headings