#python #pysimplegui
Вопрос:
Я создал многострочные элементы со списком, чтобы он выглядел как таблица. Теперь я хочу поместить эти элементы в столбец и создать несколько столбцов рядом.
Код:
some_string = 'some string'
x_labels = ['0', '1', '2', '3', '4']
y_labels = ['a', 'b', 'c', 'd', 'e']
main_column = [
[sg.T(some_string)],
[[sg.Multiline(size=(10, 3), key=(x, y), disabled=True, justification='center', no_scrollbar=True)
for x in range(len(x_labels))] for y in range(len(y_labels))]]
extra_column = [[sg.T(y_labels[y], justification='center')] for y in range(len(y_labels))]
layout = [[sg.Column(extra_column), sg.Column(main_column)]]
window = sg.Window('Table Test', layout, default_element_size=(12, 1), element_padding=(1, 1),
return_keyboard_events=True)
Что дает
это ошибка. Насколько я понимаю, каждый объект макета или столбца представляет собой список элементов списка.
Что я пробовал:
- Проверил, можно ли использовать столбец main_column в качестве макета, что он и делает:
some_string = 'some string' x_labels = ['0', '1', '2', '3', '4'] y_labels = ['a', 'b', 'c', 'd', 'e'] main_column = [ [sg.T(some_string)], [[sg.Multiline(size=(10, 3), key=(x, y), disabled=True, justification='center', no_scrollbar=True) for x in range(len(x_labels))] for y in range(len(y_labels))]] layout = main_column window = sg.Window('Table Test', layout, default_element_size=(12, 1), element_padding=(1, 1), return_keyboard_events=True)
Это должно означать, что это список элементов списка, который также может использоваться внутри элемента столбца. Я что-то упускаю?
Ответ №1:
main_column = [
[sg.T(some_string)],
[[sg.Multiline(size=(10, 3), key=(x, y), disabled=True, justification='center', no_scrollbar=True) for x in range(len(x_labels))] for y in range(len(y_labels))],
]
main_colum[1]
это не список элементов, а список списка элементов здесь. Это означает main_column
, что это не список элементов списка.
main_colum
следует пересмотреть, чтобы
main_column = [
[sg.T(some_string)]] [
[sg.Multiline(size=(10, 3), key=(x, y), disabled=True, justification='center', no_scrollbar=True)
for x in range(len(x_labels))]
for y in range(len(y_labels))
]