所以我对编程很陌生,这是我在 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)
不确定问题是什么,按照代码演示答案。
如果你需要更多的
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')],
]