为什么我的循环无法在HTML中显示出良好的效果?

时间:2018-09-28 11:35:23

标签: python html python-3.x sqlite pyqt5

我在制作循环以显示数据库中的数据时遇到问题。一切都应在应以HTML显示循环的那部分工作正常。当我简单地打印数据时,它们可以很好地显示,但是当需要以html显示时,它们仅显示一次,并且仅显示最后一个条目

代码:

cursor.execute("SELECT * FROM telImenik ")



self.htmlKod = ""
self.num_rows = 0
for i in range(0, 126):
    row = cursor.fetchone()
    print(row[0])
    self.htmlKod = """<tr><td style='padding:5px;'> {L} </td>
                            <td style='padding:5px;'>{P}</td>
                            <td style='padding:5px;'>{I}</td>
                            <td style='padding:5px;'>{T}</td>
                            <td style='padding:5px;'>{Lok}</td></tr>



                         """.format(L=row[0], P=row[1], I=row[2], T=row[3], Lok=row[4])

    self.num_rows = self.num_rows + 1

self.document = QTextDocument()

self.html = """
       <!DOCTYPE html><html lang='en'>
       <title>BS Admin</title>
       <head>
       <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
       </head>
       <body style='margin:0;'>  
       <table width='100%'  border=0 style='color:black;font-weight:bold;'>
       <tr>
       <td width='50%'>Naziv<br>VAdresa</td>
       <td width='50%'><img src='ikonice/logo.png' align='right' ></td>
       </tr>
       </table>  <br>
       <center><h1>POdaci</h1></center><br>

       <table width='100%'  border=1 style='color:black;font-weight:bold;border-color:silver;' cellspacing=0 cellpadding=0>
       """ + self.htmlKod + """
       </table>
       </body></html>
       """.format('', '')

cursor.close()
konekcija.close()

1 个答案:

答案 0 :(得分:1)

您的for循环在每次迭代时替换字符串:

self.htmlKod = ""
for i in range(0, 126):
    # ...
    self.htmlKod = """...""".format(...)

self.htmlKod =不会合并字符串,因此最后只有最后一个分配获胜。

但不要使用+=来连接字符串,而是建立一个 list ,然后最后使用str.join()。这样可以提高效率,因为它避免了每次添加更多文本时重复复制不断增长的字符串的情况:

rows = []
for i in range(0, 126):
    # ...
    row.append("""...""".format(...))

self.htmlKod = "".join(rows)