没有选项可以在 sg.Tree 或 ttk.Treeview 中换行。
据我所知,唯一的方法是在文本中插入“\n”,然后它会换行到下一行。
要连续显示所有行,您必须将选项row_height 设置为足够大以容纳所有行。
这里会为row_height产生另一个问题。
- 如果行高太小而无法显示所有换行线,您将看不到下一行。
- 如果您将
row_height 设置得足够大,即使只有一行,您仍会看到相同的空间占用。
- 文本将垂直居中对齐
似乎没有办法为不同的行设置行高。
这里的例子,
import textwrap
from random import randint, choice
import PySimpleGUI as sg
def wrap(string, lenght=15):
return '\n'.join(textwrap.wrap(string, lenght))
sg.theme('DarkBlue')
sg.set_options(font=('Courier New', 12))
column_width = 15
word = "1234567890"*5
data = [[wrap(word[:randint(1, 50)], column_width) for col in range(4)] for row in range(30)]
header_list = [f'Column {i}' for i in range(4)]
size_list = [column_width+2]*4
layout = [
[sg.Table(
key="-TREE-",
values=data,
headings=header_list,
display_row_numbers=False,
col_widths=size_list,
auto_size_columns=False,
num_rows=10,
row_height=80,
alternating_row_color='green',
)],
]
window = sg.Window('Tree Element Test', layout, finalize=True)
tree = window['-TREE-'].Widget
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, 'Cancel'):
break
window.close()
另一种方式更难实现,使用其他元素来模拟树或表格,例如来自Nagaraj Tantri的示例