Как я могу заменить текст / изображения в tkinter? - PullRequest
0 голосов
/ 01 апреля 2020

Я создаю приложение с tkinter, которое читает информацию из файла (автор, сообщение, имя изображения) и отображает его, как визуальную новеллу. Нажатие «продолжить» должно заменить текущую информацию информацией, хранящейся в другом (следующем) сообщении.

story.txt выглядит следующим образом:

Man_img ++ Джон ++ Меня зовут Джон!

Woman_img ++ Моника ++ Привет! Меня зовут Моника!

Вместо этого я получаю ошибку: текст остается неизменным, а изображение исчезает.

Код:

from tkinter import *
root = Tk()
s = open('story.txt', 'r+')
lines = s.read().splitlines()
s.close()
i=0

display = ''
speakervar = ''
textvar = ''
speaker = ''
text = ''


def next_scene():
    global lines, display, i, label, photo, speakervar, textvar, speaker, text
    line = lines[i]
    values = line.split(' ++ ')

    display = 'Images/'+ values[0] + '.png'
    speakervar = values[1]
    textvar = values[2]

    photo = PhotoImage(file=display)
    label = Label(root, image=photo)
    speaker = Label(root, text=speakervar)
    text = Label(root, text=textvar)


    i+=1

next_scene()


continuebutton = Button(text="Continue", fg="black", command=next_scene)


photo = PhotoImage(file=display)
label = Label(root, image=photo)
speaker = Label(root, text=speakervar)
text = Label(root, text=textvar)


speaker.grid(column=0, row=1)
text.grid(column=0, row=2)
label.grid(column=0, row=0)
continuebutton.grid(column=0, row=3)

root.mainloop()

1 Ответ

1 голос
/ 01 апреля 2020

Делая

speaker = Label(root, text=speakervar)

Вы создаете новый виджет каждый раз, а не просто обновляете текст.

для обновления текста просто выполните

speaker['text'] = speakervar

Аналогичный метод может быть применен для изменения PhotoImage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...