Есть ли способ добавить несколько строк в текстовый объект? (Графика Zelle) - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь создать объект Text с несколькими строками, используя библиотеку Zelle Graphics, но, похоже, он принимает только один строковый аргумент. Вот как я это настроил:

text = Text(Point(250, 250), "You have", x, "remaining")

Это желаемый вывод (как показано в графическом окне):

"У вас есть х осталось"

Ответы [ 3 ]

0 голосов
/ 05 января 2019

Форматирование строк - это то, на что вы ссылаетесь. .format должно быть хорошо Документация

0 голосов
/ 05 января 2019

Вы забыли объяснить, что используете модуль graphics от John Zelle. Я знаю, что в теге, но лучше быть немного более явным. Нельзя ожидать, что даже эксперты будут знать автоматически о каждой библиотеке.

Класс Text в этом модуле имеет конструктор со следующей подписью:

def __init__(self, p, text): 

означает, что вы должны передать ему Point объект и ровно одну строку. Это означает, что вы не можете сделать это:

text = Text(Point(250, 250), "You have", x, "remaining")

но вы можете сделать

text = Text(Point(250, 250), f"You have {x} remaining")

в Python 3.7 или

text = Text(Point(250, 250), "You have {x} remaining".format(x=x))

в более ранних версиях.

0 голосов
/ 05 января 2019

Из того, что я понимаю из вашего вопроса, вы хотели бы что-то вроде этого:

x = 4
print("You have %s of these remaining" % x)

# Output: You have 4 of these remaining

Вы можете думать о% s как о заполнителе и назначать его значение после% за пределами строки.

Другой способ сделать это будет выглядеть так:

x = 4
print("You have " + str(x) + " of these remaining")

Это напечатало бы то же самое.

...