PySimpleGUI程序中sg.Text()无法用 实现换行问题求助
问题解决方法
你的问题出在布局结构上:现在的循环是把所有sg.Text组件放在**同一个布局行(外层列表的第一个子列表)**里,PySimpleGUI会把它们横向排列,而且单个sg.Text里的\n不会触发换行(因为组件本身是行内元素)。
有两种简单的修复方式:
方式1:每个乘法式单独占一行
把每个式子对应的sg.Text放在单独的子列表里,PySimpleGUI会自动纵向排列每行内容:
if event == 'TABUAR': maximo = int(values[1]) + 1 numero = int(values[0]) # 生成每行一个Text的布局 layout = [] for i in range(1, maximo): layout.append([sg.Text(f'{i}x{numero} = {i*numero}')]) layout.append([sg.Button('SAIR')]) # 最后添加退出按钮 window = sg.Window('TABUADA', layout)
方式2:用单个Text组件包含所有换行内容
把所有乘法式拼接成一个带\n的字符串,放在一个sg.Text组件中,同时让组件自动适配内容:
if event == 'TABUAR': maximo = int(values[1]) + 1 numero = int(values[0]) # 拼接所有式子成一个带换行的字符串 tabuada_text = '\n'.join([f'{i}x{numero} = {i*numero}' for i in range(1, maximo)]) layout = [ [sg.Text(tabuada_text, auto_size_text=True)], [sg.Button('SAIR')] ] window = sg.Window('TABUADA', layout)
两种方式都能实现每行显示一个乘法式的效果,第一种更灵活(后续可给每行添加其他交互元素),第二种代码更简洁。
内容的提问来源于stack exchange,提问作者Typed Nul
相关产品推荐
相关产品推荐

