Python XML NameError: global name 'qn' is not defined

Python XML NameError: global name 'qn' is not defined

我正在使用 python-docx 编写一个脚本,它创建一个 table(rows=1, cols=1)。单元格内的文本需要垂直和水平对齐,背景为灰色。

我使用 WD_TABLE_ALIGNMENT 水平对齐文本,使用 xml 为背景着色。但这是我的问题。我用 XML 脚本垂直对齐,但出现错误:"global name 'qn' is not defined."

这是代码:

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import nsdecls
from docx import parse_xml, OxmlElement

def create_table():
    table = document.add_table(rows=1, cols=1)
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    row_cells=table.rows[0].cells
    tc=row_cells[0]._tc
    tcPr=tc.get_or_add_tcPr
    tcVAlign = OxmlElement('w:vAlign')
    tcVAlign.set(qn('w:val'), "center")
    tcPr.append(tcVAlign)

是否导入错误?还是脚本错误?

谢谢。

我正在查看 docx 库,在 /docx/oxml/xlmchemy.py 中我找到了一行:

from .ns import qn

所以我尝试这样做:

from docx.oxml.ns import qn

这是一个 ns 函数,它可以工作。

谢谢。