我正在尝试编写一些Python代码来在Scribus中创建文本框,然后对文本框进行分组。我在围绕如何使用列表或词典来避免变量问题时遇到了一些困难。
我有代码来创建一系列文本框,然后设置文本。
shpA = scribus.createText(strLeft, strTop, strWidth, strHeight)
scribus.setText(strTextA, shpA)
shpB = scribus.createText(strLeft, strTop, strWidth, strHeight)
scribus.setText(strTextB, shpB)
shpC = scribus.createText(strLeft, strTop, strWidth, strHeight)
scribus.setText(strTextC, shpC)
文本框完成后,我将它们分组在页面上。
lstObjects=[shpA, shpB, shpC]
scribus.groupObjects(lstObjects)
这是问题所在。我需要通过循环遍历可变数量的迭代来生成多个shpA文本框,然后运行分组。
icnt = 0
while icnt < (intNumLines):
shpA = scribus.createText(strLeft, strTop, strWidth, strHeight)
scribus.setText(strTextA, shpA)
icnt += 1
我已经能够运行循环并生成框。但是,我还没有弄清楚如何为每个文本框(shpA1,shpA2等)分配不同的变量名称。因此,只有循环中的最后一个文本框才会获得变量(shpA),并且我无法引用循环中生成的其他文本框。
我已经阅读过列表和词典上的几十个主题,但我担心这一切对我来说有点先进。
非常感谢任何帮助。
答案 0 :(得分:1)
容器(列表或字典)绝对是唯一的方法,而且远非复杂。例如,你的循环机会
icnt = 0
shpAS = [] # empty list to start
while icnt < (intNumLines):
shpA = scribus.createText(strLeft, strTop, strWidth, strHeight)
scribus.setText(strTextA, shpA)
icnt += 1
shpAS.append(shpA) # add new textbox at the end of the list
现在,shpAS
是每个创建为shpA
的文本框列表。无论您在何处(如果您每次都可以生成新变量)使用shpA1
,请改用shpAS[0]
;无论shpA2
,shpAS[1]
;等等,它实际上就像使用许多单独的“标量”变量(显然是你心中的愿望)一样简单。