Строка 11: AttributeError: экземпляр списка не имеет атрибута __index__ или __int__ - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь создать программу, которая отображает время, оставшееся на таймере, используя "import simplegui".

import simplegui

def timer_handler():

    timer = simplegui.create_timer(500, timer_handler)
    timer.start()

message = simplegui.create_timer

def draw(canvas):
    canvas.draw_text(int(message, [50,112], 48, "Red")) #Line where I get the error.

frame = simplegui.create_frame("Home", 300, 200)
frame.set_draw_handler(draw)

frame.start()

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Вы используете таймер неправильно.timer_handler - это функция, которая вызывается каждый раз, когда ваш таймер «тикает».Вы должны создать таймер вне функции, а затем передать обработчик в качестве параметра.

Что касается отображения времени, вы должны создать глобальную переменную и затем увеличить ее из обработчика следующим образом:

import simplegui

time = 0

def timer_handler():
    global time
    time += 1

timer = simplegui.create_timer(500, timer_handler)
timer.start()

def draw(canvas):
    canvas.draw_text(str(time), [50,112], 48, "Red") #Line where I get the error.

frame = simplegui.create_frame("Home", 300, 200)
frame.set_draw_handler(draw)

frame.start()
0 голосов
/ 11 февраля 2019

У вас слишком много скобок в конце строки.Таким образом, аргументы для draw_text передаются в качестве аргументов для int

canvas.draw_text(int(message), [50,112], 48, "Red")
                            ^ Move the trailing parenthesis here
...