2017-07-27 31 views
0

我一直在努力尝试更改报告实验室中的段落样式。我认为这个问题可能是缺乏对类的理解。如果有人可以给我一些可怕的指针。贝娄是我的代码。当我运行它时,我得到的错误'错误调用元类基地初始()至多3个参数(4给出)“。报告实验室更改段落样式

干杯,

罗宾

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

完整的追溯?哪条特定线路突破? –

+0

此外,你的问题和问题标题是非常具体的,似乎是一个相对普遍的错误(尽管你可能看不到)。如果你可以让你的问题更具通用性,让其他人更容易找到它。 –

回答

0

没有调试代码为您提供:

__init__()是一类初始化。 (这是一个类似的新Java中)

它的意思是:如果我已经定义了一个类Foo的地方,后来做a = Foo(param1),会发生什么背景是的Python,然后调用类Foo.__init__(self, param1),其中self分配内存是该类新分配的内存。

请注意,Python会将self插入参数中而不会看到它。这意味着Foo.__init__()在技术上收到两个参数(根据Python和任何回溯),您只能输入一个参数到Foo()!对于那些不熟悉Python类的人来说,这可能是一个令人困惑的旅程。

因此,在你的情况下,你(或你调用的某个东西)正在初始化一个类并传递三个参数(IE:a = Foo(1, 2, 3))。 Python然后通过self,然后通过您输入的参数到该类的__init__(),以便它接收四个参数(self, 1, 2, 3)。这个类只有三个参数被声明,所以你传递了一个太多!它只能容忍你传递了两个(或者可能少于如果它需要的关键字参数)参数,所以,当self添加__init__()得到总共三个参数。

当此出现时,通常最好检查一下它未能上线,并确保它看起来不错,然后参阅您要初始化类的文档。

+0

我想这可能是越来越近了,但是我现在有颜色是不确定的,并抛出一个错误的问题。感谢您的帮助,我想我开始理解类。 – Robin

+0

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