The add_page()
function errors whenever I try to get any user input in __init__()
or a classmethod
. It works fine when I don't have any methods to get user input, so I think it's somehow interfering.
AttributeError: 'PDF' object has no attribute 'state'. Did you mean: 'rotate'?
Error
Name: ttt
Traceback (most recent call last):
File "/workspaces/106404228/shirtificate/shirtificate.py", line 63, in <module>
pdf = PDF.get_name()
File "/workspaces/106404228/shirtificate/shirtificate.py", line 44, in get_name
return cls(name)
File "/workspaces/106404228/shirtificate/shirtificate.py", line 32, in __init__
self.add_page(self, format='a4')
File "/home/ubuntu/.local/lib/python3.10/site-packages/fpdf/fpdf.py", line 813, in add_page
if self.state == DocumentState.CLOSED:
AttributeError: 'PDF' object has no attribute 'state'. Did you mean: 'rotate'?
Code
from fpdf import FPDF
class PDF(FPDF):
def __init__(self, name):
if not name:
raise ValueError("no name")
self.name = name
self.add_page(self, format='a4')
# header
def header(self):
self.image("shirtificate.png")
self.ln(20)
@classmethod
def get_name(cls):
name = input("Name: ")
return cls(name)
@property
def name(self):
return self._name
@name.setter
def name(self, name):
if not name:
raise ValueError("no name")
self._name = name
pdf = PDF.get_name()
pdf.set_font("helvetica", "B", 16)
pdf.output("shirtificate.pdf")