回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个列表,它将联系人对象的y坐标存储在列表中,这样我就可以访问联系人在屏幕上相对于y位置的信息。如果这是有用的信息,我会使用PyGame。在</p>
<p>打印list很好并返回正确的值,但是当我试图在主事件循环中访问列表时,在使用<code>for</code>循环遍历列表时,会出现上述错误。在</p>
<p>下面是将y值附加到我的列表的代码:</p>
<pre><code>class MainPage(Page):
...
def printContacts(self):
addressBook = AddressBook()
addressBook.contactsList
addressBook.contactsList.sort(key = lambda c: (c.lastName, c.firstName) if c.lastName else (c.firstName, ""))
contactFont = pygame.font.SysFont("trebuchet ms", 18)
global indexedContacts
indexedContacts = {}
global yIndex
yIndex = [] #List to <a href="https://www.cnpython.com/list/append" class="inner-link">append</a> y values to
y = 20
for (key, g) in groupby(addressBook.contactsList, lambda c: c.lastName[0] if c.lastName else c.firstName[0]):
groupName = contactFont.render(key, True, (171,0,0))
self.intermediate2.blit(groupName, (5, y))
pygame.draw.line(self.intermediate2, (0,0,0), (5,(y+20)), (320, (y+20)), 1)
y += 30
for i in g:
name = i.firstName + " " + i.lastName
textName = contactFont.render(name, True, (0,0,0))
pygame.draw.line(self.intermediate2, (210,210,210), (5,(y+20)), (320, (y+20)), 1)
self.intermediate2.blit(textName, (5, y))
indexedContacts[(y+72)] = i
yIndex.append((y+72)) #Appends current value to list
y += 30
</code></pre>
<p>以下是返回错误的事件代码:</p>
^{pr2}$