如何在每个标签中放置字符串数

时间:2014-07-21 17:15:17

标签: python python-2.7

我正在使用我的python脚本从sqlite3数据库中获取通道列表。

我想获取7个频道来设置每个标签控件中的每个频道40104011401240134014,{{1 }和4015。当我获取通道列表以将它们放入每个标签时,没有任何实际发生,因为每个标签控件都没有设置文本。

当我使用它时:

4016

结果:

#Pull the data from the database
channelList = list()
programList = list()
database_path = xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide', 'source.db'))

if os.path.exists(database_path):
    #get the channels list
    cur.execute('SELECT channel FROM programs WHERE channel GROUP BY channel')


    for row in cur:
        channel = row[0].encode('ascii')
        channelList.append(channel)

        # set the channels text
        for index in range(0, channels_per_page):
             if index >= len(channel):
                self.setControlLabel(4010 + index, channel)

我想在每个标签控件中设置文本,如下所示:

17:02:10 T:6400  NOTICE: 101 ABC FAMILY
17:02:10 T:6400  NOTICE: 102 CBS
17:02:10 T:6400  NOTICE: 103 CNN USA
17:02:10 T:6400  NOTICE: 105 ESPN USA
17:02:10 T:6400  NOTICE: 106 Fox News
17:02:10 T:6400  NOTICE: 107 Animal Planet
17:02:10 T:6400  NOTICE: 108 USA Network
17:02:10 T:6400  NOTICE: 110 SPIKE
17:02:10 T:6400  NOTICE: 111 BRAVO USA
17:02:10 T:6400  NOTICE: 112 BRAVO1
17:02:10 T:6400  NOTICE: 113 BRAVO2
17:02:10 T:6400  NOTICE: 114 BRAVO3
17:02:10 T:6400  NOTICE: 115 BRAVO4
17:02:10 T:6400  NOTICE: 116 BRAVO5
17:02:10 T:6400  NOTICE: 117 BRAVO6
17:02:10 T:6400  NOTICE: 118 BRAVO7

编辑:当我使用此代码时:

>>4010 ABC FAMILY
>>4011 CNN USA
>>4012 ESPN USA
>>4013 Fox News
>>4014 Animal Planet
>>4015 USA Network
>>4016 SPIKE

我得到了这个结果:

self.getControl(4110 + idx).setLabel(channels)

编辑:当我使用它时:

>>4010 BRAVO7
>>4011 BRAVO7
>>4012 BRAVO7
>>4013 BRAVO7
>>4014 BRAVO7
>>4015 BRAVO7
>>4016 BRAVO7

它将拆分字符串并将每个字母设置为每个标签控件,如下所示:

self.getControl(4110 + index).setLabel(channels[index])

它应该是这样的:

4110 >> 1
4111 >> 0
4112 >> 1
4113 >> 
4114 >> A
4115 >> B
4116 >> C

1 个答案:

答案 0 :(得分:0)

for row in cur:
    channel = row[0].encode('ascii')
    channelList.append(channel)

    # set the channels text
    for index in range(0, channels_per_page):
         if index >= len(channel):
            self.setControlLabel(4010 + index, channel)

这里看起来你从数据库中获得的每个频道都进行一次for循环。我猜你实际上想要从数据库中获取所有数据之后运行for循环。如果是这种情况,这段代码可能会起到作用:

for row in cur:
    channel = row[0].encode('ascii')
    channelList.append(channel)

# set the channels text
for index in range(len(channelList)):
      self.setControlLabel(4010 + index, channelList[index])

但要理解其中某些功能(setControlLabelgetControlsetLabel)以及您尝试使用代码完成的工作有点困难。这是我根据评论做出的假设。