2017-07-27 9 views
0

Je me suis efforcé d'essayer de changer le style de paragraphe dans le laboratoire de rapport. Je pense que la question est probablement un manque de compréhension de ce que sont les classes. Si quelqu'un pouvait me donner des conseils qui seraient géniaux. Bellow est mon code. Quand je l'exécute, j'obtiens l'erreur 'Erreur lors de l'appel des bases de la métaclasse init() prend au plus 3 arguments (4 donnés)'.Report Lab Changer le style de paragraphe

Cheers,

Robin

from reportlab.lib.styles import ParagraphStyle 
from reportlab.pdfgen.canvas import Canvas 
from reportlab.lib.styles import getSampleStyleSheet 
from reportlab.lib.units import mm 
from reportlab.platypus import Paragraph, Frame 

Title = 'Test' 

c = Canvas(str(Title)+'.pdf') 

story = [] 

file = open('Acknowledgements.txt','r') 
lis = [] 
for line in file: 
    lis.append(line) 





styles = getSampleStyleSheet() 
styleN = styles['Normal'] 
styleH = styles['Heading1'] 

class ParagraphStyle(styleN): 
      defaults = { 
       'fontName':'Helvetica', 
       'fontSize':14, 
       'leading':12, 
       'leftIndent':0, 
       'rightIndent':0, 
       'firstLineIndent':0, 
       'alignment':0, 
       'spaceBefore':0, 
       'spaceAfter':0, 
       'bulletFontName':'Helvetica', 
       'bulletFontSize':10, 
       'bulletIndent':0, 
       'textColor': 'k', 
       'backColor':None, 
       'wordWrap':None, 
       'borderWidth': 0, 
       'borderPadding': 0, 
       'borderColor': None, 
       'borderRadius': None, 
       'allowWidows': 1, 
       'allowOrphans': 0, 
       'textTransform':None, 
       'endDots':None, 
       'splitLongWords':1, 
       'underlineProportion': 0, 
       'bulletAnchor': 'start', 
       'justifyLastLine': 0, 
       'justifyBreaks': 0, 
       'spaceShrinkage': 0, 
       } 




story.append(Paragraph('Acknowledgements', styleH)) 
for l in lis: 
    story.append(Paragraph(l, styleN)) 



f = Frame(110*mm, 0*mm, 90*mm, 280*mm, showBoundary=0) 

f.addFromList(story,c) 

c.save() 
+0

La trace complète? quelle ligne spécifique est-elle cassée? –

+0

En outre, votre question et le titre de la question sont très spécifiques pour ce qui semble être une erreur relativement générique (même si vous ne le voyez peut-être pas). Si vous pouvez rendre votre question plus générique, cela permettra à d'autres personnes de la trouver plus facilement. –

Répondre

0

sans débogage du code pour vous:

__init__() est un initialiseur de classe. (Il est similaire à neuf en java)

Cela signifie: si j'ai défini une classe Foo quelque part, et plus tard faire a = Foo(param1), ce qui se passe en arrière-plan est Python alloue de la mémoire pour la classe appelle ensuite Foo.__init__(self, param1), où self est la mémoire nouvellement allouée pour la classe.

Notez que Python a inséré self dans les paramètres sans que vous le voyiez. Cela signifie que techniquement a reçu deux arguments (selon Python et any traceback) où vous entrez seulement un argument dans Foo()! Cela peut être un tripup déroutant pour ceux qui ne sont pas familiers avec les classes en Python. Dans votre cas, vous (ou quelque chose que vous appelez) initialisez une classe et lui transmettez trois arguments (IE: a = Foo(1, 2, 3)). Python passe ensuite self suivi des paramètres que vous avez entrés dans __init__() de cette classe pour qu'il reçoive quatre arguments (self, 1, 2, 3). La classe a été déclarée avec seulement trois arguments, donc vous en passez un de trop! Il peut seulement tolérer que vous passiez deux arguments (ou peut-être moins si cela prend des mots-clés), de sorte que lorsque self est ajouté, __init__() obtient trois arguments au total. Lorsque cela se produit, il est généralement préférable de vérifier la ligne sur laquelle il a échoué et de vérifier que tout va bien, puis reportez-vous à la documentation de la classe que vous essayez d'initialiser.

+0

Je pense que cela se rapproche peut-être mais j'ai maintenant le problème de la couleur étant indéfinie et jetant une erreur. Merci pour votre aide, je pense que je commence à comprendre les cours. – Robin

+0

https://stackoverflow.com/questions/9855445/how-to-change-text-font-color-in-reportlab-pdfgen help? –