для рисования петли на холст не работает. Рисует строку в первом месте, но не в следующем - PullRequest
0 голосов
/ 21 июня 2019

Я работаю над динамическим расписанием. Моя первая проблема заключается в том, что я хочу убедиться, что могу печатать строку в reportlab с разными переменными, однако мой цикл не работает. Он печатает строку в первой позиции, но не в последующих.

Я попытался напечатать переменную для высоты, и она постепенно увеличивается, так что это работает, и переменная, содержащая координату x, тоже подойдет. Итак, я знаю, что цикл зацикливается.


from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, A4
from reportlab.platypus import Image
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os
#have to register a font first
pdfmetrics.registerFont(TTFont('Marcellus SC', 'MARCELLUSSC-REGULAR.ttf'))

PDF_FILENAME = "Timestable_File.pdf"
PDF_LOCATION = "C:/Users/BOTTL/Desktop/PDF Python Save/"

FILENAME_AND_LOCATION = os.path.join( PDF_LOCATION, PDF_FILENAME )
FONT_TYPE = "Marcellus SC"
REGULAR_SIZE = 14

COLUMN1 = 42


#Lets the program know where to save the pdf
c = canvas.Canvas(FILENAME_AND_LOCATION, pagesize=letter)
c.setFont(FONT_TYPE,32,leading=None)
c.setFont(FONT_TYPE,REGULAR_SIZE,leading=None)



for i in range (1,11):
    ROW_VAR = 600
    c.drawString(COLUMN1,ROW_VAR,"TEST STRING")
    ROW_VAR =ROW_VAR + i * 20
    i +1
    print(i)
    print (ROW_VAR)







c.showPage()
c.save()


Фактический результат заключается в том, что он печатает одну «СТРОКУ ТЕСТА» с координатой 42 600

Я ожидал, что колонка из 10 версий этого будет разнесена

1 Ответ

0 голосов
/ 21 июня 2019

Вы настраиваете ROW_VAR до 600 перед печатью TEST_STRING. Каждый цикл, который вы запускаете, сбрасывает ROW_VAR на 600.

Вы должны определить ROW_VAR вне цикла for один раз, чтобы вы могли обновить его в цикле.

Как-то так должно работать

ROW_VAR = 600

for i in range (1,11):
    c.drawString(COLUMN1,ROW_VAR,"TEST STRING")
    ROW_VAR = ROW_VAR + i * 20
    i +1
    print(i)
    print (ROW_VAR)
...