Обновление нескольких объектов create_text в Tkinter Canvas - PullRequest
0 голосов
/ 23 октября 2019

Я хочу постоянно обновлять вывод времени, наложенный на холст с фоном. Я могу сделать это, когда текст находится на метке, но метка не позволяет мне добавлять несколько текстовых объектов, не создавая фон вокруг текста. Я могу добавить статическое время, но как только я пытаюсь создать функцию для простого создания текста, у меня появляется ошибка

Так что этот код работает нормально:

timenow = time.strftime('%H:%M:%S')

root = Tk()
c = Canvas(root, width = 500, height = 333)
c.pack()
image = PhotoImage(file = 'C:/Users/Khalid Byra/Desktop/Python Alarm Clock Project/wallpaper.gif')
c.create_image(0, 0, image=image, anchor=NW)
c.create_text(250, 166.5, text = timenow, font=('Arial', 24), fill = 'white', anchor = CENTER)

Однако, когда я пытаюсь изменить его на метод, подобный следующему:

c.create_image(0, 0, image=image, anchor=NW)
def write(x=250, y=166.5, text=timenow, font=('Arial', 24), fill='white', anchor=CENTER):
    c.create_text(x, y, text, fill, anchor, text)
write()

, я получаю следующую ошибку:

*(args + self._options(cnf, kw))))

_tkinter.TclError: unknown option "22:27:34«

1 Ответ

0 голосов
/ 23 октября 2019

Хорошо, неважно, я понял это, должен был сделать это:

def write (x = 250, y = 166.5, text = timenow, font = ('Arial', 32), fill = 'white ', anchor = CENTER): c.create_text (x, y, text = text, fill = fill, anchor = anchor)

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

def tick():
    global timenow
    time2 = time.strftime('%H:%M:%S')
    if time2 != timenow:
        timenow = time2
        write(text = time2)
    c.after(200, tick)

tick()

Но проблема здесь в том, что он помещает новый текст поверх старого, что делает его беспорядочным. Так что теперь мне нужно выяснить, чтобы удалить старый текст, как появляется новый? Но он не назначен переменной, поэтому я не уверен, как

...