简单 PySimpleGUI 程序的换行问题

问题描述 投票:0回答:1

所以我对编程很陌生,这是我在 PySimpleGUI 上的第一个独立程序。有一段时间一切顺利,我设法得到了我想要的一切,除了一个小错误:我不能在 sg.Text() 上换行 .这是程序应该是(是)应该是什么(代码中的文本不是英文):

出现一个简单的窗口,要求用户输入两个内容:他们想要表格的编号和直到他们想要表格的编号。然后,用户单击“TABLE”(tabuar),出现另一个窗口,显示所询问号码的表格。问题出现在第二个窗口中: 我希望表格像那样显示(* 是数字):1x* = *(换行符)2x* = *(换行符)等等。相反,它显示如下:1x* = * 2x** = ** 没有换行符。

我搜索了一下,把 在每个可能的地方,没有任何效果。我想要的只是它有正确的间距。真的很简单。我认为问题是我使用了一个循环(因为它显示的表的数量因用户输入而异)或类似的东西。帮帮我?

这是包含问题本身的主要块(注意我是从更大的 while true 块中得到的):

TABUAR 是你点击显示表格的按钮,values[1] 是你输入多少张表格的值,values[0] 是数字本身。


    if event == 'TABUAR':
        maximo = int(values[1])+1
        numero = int(values[0])
        layout = [[sg.Text(f'{i}x{numero} = {i*numero}\n')for i in range(1, maximo)],
                  [sg.Button('SAIR')]
                  ]
        window = sg.Window('TABUADA', layout)
python line-breaks pysimplegui
1个回答
0
投票

不确定问题是什么,按照代码演示答案。

如果你需要更多的

Text
元素垂直排列,
'\n'
不会在这里显示,因为
Text
元素的高度只有1.

import PySimpleGUI as sg

def sub_window(number, tables):

    layout = [
        [sg.Text(f'{i+1}x{number} = {(i+1)*number}')] for i in range(tables)] + [
        [sg.Push(), sg.Button('OK')],
    ]
    sg.Window('Sub Window', layout, modal=True).read(close=True)

layout = [
    [sg.Text('Number'), sg.Push(), sg.Input(key='Number')],
    [sg.Text('Tables'), sg.Push(), sg.Input(key='Tables')],
    [sg.Push(), sg.Button('Submit')],
]
window = sg.Window('Title', layout)

while True:

    event, values = window.read()

    if event == sg.WIN_CLOSED:
        break
    elif event == 'Submit':
        try:
            number, tables = int(values['Number']), int(values['Tables'])
        except ValueError:
            sg.popup('Wrong integer !', title='Error Message')
            continue
        sub_window(number, tables)

window.close()

如果需要多行来显示

Text
元素,可以设置
size
元素的选项
Text
,如
(None, 2)
,会显示
'\n'

    layout = [
        [sg.Text(f'{i+1}x{number} = {(i+1)*number}\n', size=(None, 2))] for i in range(tables)] + [
        [sg.Push(), sg.Button('OK')],
    ]

© www.soinside.com 2019 - 2024. All rights reserved.