2017-07-27 30 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幫助? –