python:进度条不接受int

时间:2017-10-07 04:19:30

标签: python

我正在尝试从每个循环中提取我的进度条int值,但我一直收到错误,表示我没有输入int值:

TypeError: 'int' object does not support item assignment

我正在做的是:

  1. 获取数组的总长度
  2. 将进度条的长度除以数组长度(以获取数组中每个项目的值/百分比)
  3. 每个循环将从第二步获得的值转换为(int)并添加到总值var
  4. 在总值var上投射(int)并将其分配给我的进度条
  5. 代码的各个部分目前看起来像这样:

    (in main loop)
    ....
    self.progress = Progressbar(self, orient=HORIZONTAL,length=100,  mode='determinate')
    global that
    that = self
    def progress_bar(self, progress):
        progress["value"]=int(progress)
    ....
    (in another worker thread)
    ....
    item_count = 0
    item_percent = 100 / len(my_arr)
    for x in my_arr:
        item_count += 1
        pb_percent = item_count * item_percent
        pb_formatted = int(pb_formatted)
        Application.progress_bar(that, int(pb_formatted))
    

    一切似乎都适合我,但我一直都会遇到这个错误。当我打印pb_formatted var时,我可以看到它是我需要的进度条,我还运行了一些if-else代码块来检查我输入的内容是否确实{{ 1}}。

    可能是什么问题?

1 个答案:

答案 0 :(得分:1)

这是你的问题:

def progress_bar(self, progress):
    progress["value"]=int(progress)

progress这是你传入的论据,比如说42 42["value"] = int(42)并不意味着什么。你如何将42分配给42的第42项?换句话说,您无法分配到progress["value"],因为progress不是容器。

您可能希望self.progress符号左侧显示=self.progress是您的Progressbar个实例。