Python报错TypeError: ['XXXX'] object is not callable

再写reportlab时,遇到一个小问题。

#生成pdf报名表
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer,Table,TableStyle
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.rl_config import defaultPageSize
from reportlab.lib.units import inch
from reportlab.lib import colors
import os,datetime


class Export_pdf(object):
    def __init__(self,data,team_id,path):
        self.team_id = str(team_id)
        self.t_data = data
        self.table_len = len(data)
        self.PAGE_HEIGHT=defaultPageSize[1]  #从导入的默认页面大小中,获得对应的页面高度与页面宽度
        self.PAGE_WIDTH=defaultPageSize[0]  #获取宽度
        styles = getSampleStyleSheet()  #获取简单的样式,用于填充文本,可以更改其中的格式
        self.style = styles["Normal"]
        self.style.fontName = 'song'
        self.path=path
        import reportlab.pdfbase.ttfonts
        reportlab.pdfbase.pdfmetrics.registerFont(reportlab.pdfbase.ttfonts.TTFont('song', self.path+'/static/fonts/simsun.ttc')) 
        reportlab.pdfbase.pdfmetrics.registerFont(reportlab.pdfbase.ttfonts.TTFont('kai', self.path+'/static/fonts/simkai.ttf'))
        reportlab.pdfbase.pdfmetrics.registerFont(reportlab.pdfbase.ttfonts.TTFont('yh1', self.path+'/static/fonts/msyh.ttc'))
        
    def context(self,canvas,doc):
        canvas.saveState()
        canvas.setFont('kai',11)
        s1 = '2019四川轻化工大学“国信安杯”大学生网页设计竞赛'
        canvas.drawCentredString(self.PAGE_WIDTH/2.0,self.PAGE_HEIGHT-0.75*inch,s1)
        canvas.setFont('yh1',24)
        s2 = '参 赛 团 队 信 息 表'
        canvas.drawCentredString(self.PAGE_WIDTH/2.0,self.PAGE_HEIGHT-108,s2)
        canvas.setFont('kai',11)
        s2 = '计算机技术协会  制'
        canvas.drawString(inch,0.75*inch,s2)
        canvas.restoreState()
    
    def make_pdf(self):        
        timestr = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
        self.path = os.path.join(self.path,'static/export_pdf','Team:'+self.team_id+'.报名信息表'+timestr+'.pdf')
        print(self.path)
        doc = SimpleDocTemplate(self.path)
        story = [Spacer(1,0.8*inch)]
        import math
        t = Table(data,4*[1*inch], math.ceil(self.table_len/2) * [0.8*inch])   #这里想要使用Table函数建立pdf中的表格,可是函数的引用就被更改了,不能使用就会报错!!
        t.setStyle(TableStyle([
            ('BACKGROUND',(0,0),(-1,-1),colors.red),
            ('TEXTCOLOR',(0,0),(1,-1),colors.black),
            ('BOX',(0,0),(-1,-1),2,colors.black),
            ('BOX',(0,0),(-1,0),1,colors.black),
            ('ALIGN',(0,0),(-1,-1),'CENTRE'),
        ]))
        story.append(t)
        doc.build(story,onFirstPage=self.context)
        return self.path

data = [
    ['a','b','c'],
    [1,2,3],
]
Table = Export_pdf(data,9,'System')  #这里使用了导入的方法名,然后导入的函数就被更改了引用
a = Table.make_pdf()
print(a)

宗上,遇到这个错误时,一样要检查:变量名与方法名是否被重用,反过来,如果Table本来是一个变量,再定义一个Table方法,同样也会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值