Запись текста в entry поочерёдно

Как можно реализовать записи в следуюший entry ? Пытался реализовать таким образом но у меня не вышло Вот код

from pathlib import Path
from tkinter import Tk, Canvas, Entry, Text, Button, PhotoImage



OUTPUT_PATH = Path(__file__).parent
ASSETS_PATH = OUTPUT_PATH / Path("./assets")


def relative_to_assets(path: str) -> Path:
    return ASSETS_PATH / Path(path)

i = 1
entry_list = ["entry_1", "entry_2", "entry_3", "entry_4", "entry_5", "entry_6", "entry_7", "entry_8", "entry_9", "entry_10"  ] 
window = Tk()

window.geometry("455x606")
window.configure(bg = "#FFFFFF")


canvas = Canvas(
    window,
    bg = "#FFFFFF",
    height = 606,
    width = 455,
    bd = 0,
    highlightthickness = 0,
    relief = "ridge"
)

canvas.place(x = 0, y = 0)
entry_image_1 = PhotoImage(
    file=relative_to_assets("entry_1.png"))
entry_bg_1 = canvas.create_image(
    217.5,
    31.5,
    image=entry_image_1
)
entry_1 = Entry(
    bd=0,
    bg="#F4BDBD",
    highlightthickness=0
)
entry_1.place(
    x=10.0,
    y=14.0,
    width=415.0,
    height=33.0
)

entry_image_2 = PhotoImage(
    file=relative_to_assets("entry_2.png"))
entry_bg_2 = canvas.create_image(
    217.5,
    78.5,
    image=entry_image_2
)
entry_2 = Entry(
    bd=0,
    bg="#CCE9BB",
    highlightthickness=0
)
entry_2.place(
    x=10.0,
    y=61.0,
    width=415.0,
    height=33.0
)

entry_image_3 = PhotoImage(
    file=relative_to_assets("entry_3.png"))
entry_bg_3 = canvas.create_image(
    217.5,
    125.5,
    image=entry_image_3
)
entry_3 = Entry(
    bd=0,
    bg="#C6ECE6",
    highlightthickness=0
)
entry_3.place(
    x=10.0,
    y=108.0,
    width=415.0,
    height=33.0
)

entry_image_4 = PhotoImage(
    file=relative_to_assets("entry_4.png"))
entry_bg_4 = canvas.create_image(
    217.5,
    172.5,
    image=entry_image_4
)
entry_4 = Entry(
    bd=0,
    bg="#E6E0AE",
    highlightthickness=0
)
entry_4.place(
    x=10.0,
    y=155.0,
    width=415.0,
    height=33.0
)

entry_image_5 = PhotoImage(
    file=relative_to_assets("entry_5.png"))
entry_bg_5 = canvas.create_image(
    217.5,
    219.5,
    image=entry_image_5
)
entry_5 = Entry(
    bd=0,
    bg="#E19ADA",
    highlightthickness=0
)
entry_5.place(
    x=10.0,
    y=202.0,
    width=415.0,
    height=33.0
)

entry_image_6 = PhotoImage(
    file=relative_to_assets("entry_6.png"))
entry_bg_6 = canvas.create_image(
    217.5,
    266.5,
    image=entry_image_6
)
entry_6 = Entry(
    bd=0,
    bg="#9185DD",
    highlightthickness=0
)
entry_6.place(
    x=10.0,
    y=249.0,
    width=415.0,
    height=33.0
)

entry_image_7 = PhotoImage(
    file=relative_to_assets("entry_7.png"))
entry_bg_7 = canvas.create_image(
    217.5,
    313.5,
    image=entry_image_7
)
entry_7 = Entry(
    bd=0,
    bg="#33D356",
    highlightthickness=0
)
entry_7.place(
    x=10.0,
    y=296.0,
    width=415.0,
    height=33.0
)

entry_image_8 = PhotoImage(
    file=relative_to_assets("entry_8.png"))
entry_bg_8 = canvas.create_image(
    217.5,
    360.5,
    image=entry_image_8
)
entry_8 = Entry(
    bd=0,
    bg="#980CEE",
    highlightthickness=0
)
entry_8.place(
    x=10.0,
    y=343.0,
    width=415.0,
    height=33.0
)

entry_image_9 = PhotoImage(
    file=relative_to_assets("entry_9.png"))
entry_bg_9 = canvas.create_image(
    217.5,
    407.5,
    image=entry_image_9
)
entry_9 = Entry(
    bd=0,
    bg="#E42956",
    highlightthickness=0
)
entry_9.place(
    x=10.0,
    y=390.0,
    width=415.0,
    height=33.0
)

entry_image_10 = PhotoImage(
    file=relative_to_assets("entry_10.png"))
entry_bg_10 = canvas.create_image(
    217.5,
    454.5,
    image=entry_image_10
)
entry_10 = Entry(
    bd=0,
    bg="#B8F118",
    highlightthickness=0
)
entry_10.place(
    x=10.0,
    y=437.0,
    width=415.0,
    height=33.0
)

button_image_1 = PhotoImage(
    file=relative_to_assets("button_1.png"))
button_1 = Button(
    image=button_image_1,
    borderwidth=0,
    highlightthickness=0,
    command=lambda: button(),
    relief="flat"
)
button_1.place(
    x=10.0,
    y=484.0,
    width=415.0,
    height=57.0
)


def button ():
    global i
    current_entry = entry_list[i]
    print(current_entry)
    current_entry.insert(0, "test")
    print("filled entry_" + i )
    i = i + 1
    
    
window.resizable(False, False)
window.mainloop()

Ответы (1 шт):

Автор решения: GrAnd

Как вариант, ссылки на созданные entry хранить в списке.
И вообще, для повторения однотипных действий давно придуманы циклы.

from pathlib import Path
from tkinter import Tk, Canvas, Entry, Text, Button, PhotoImage

OUTPUT_PATH = Path(__file__).parent
ASSETS_PATH = OUTPUT_PATH / Path("./assets")

def relative_to_assets(path: str) -> Path:
    return ASSETS_PATH / Path(path)

i = 0
def button():
    global i
    if i < entries_count:
        entries[i].insert(0, f"test {i}")
        print(f"filled entry_{i}")
        i += 1


entry_colors = ["#F4BDBD", "#CCE9BB", "#C6ECE6", "#E6E0AE",
                "#E19ADA", "#9185DD", "#33D356", "#980CEE",
                "#E42956", "#B8F118"]
entries_count = len(entry_colors)  # 10
entry_images = []
entries = []

window = Tk()
window.geometry("455x606")
window.configure(bg = "#FFFFFF")


canvas = Canvas(
    window,
    bg = "#FFFFFF",
    height = 606,
    width = 455,
    bd = 0,
    highlightthickness = 0,
    relief = "ridge"
)
canvas.place(x = 0, y = 0)

for idx in range(entries_count):
    entry_images.append(
        PhotoImage(file=relative_to_assets(f"entry_{idx+1}.png"))
    )
    canvas.create_image(
        217.5,
        31.5 + idx*47,
        image=entry_images[-1]
    )
    entries.append(
        Entry(
            bd=0,
            bg=entry_colors[idx],
            highlightthickness=0
        )
    )
    entries[-1].place(
        x=10.0, 
        y=14 + idx*47,
        width=415.0,
        height=33.0
    )


button_image_1 = PhotoImage(
    file=relative_to_assets("button_1.png"))
button_1 = Button(
    image=button_image_1,
    borderwidth=0,
    highlightthickness=0,
    command=button,
    relief="flat"
)
button_1.place(
    x=10.0,
    y=14 + entries_count*47,
    width=415.0,
    height=57.0
)


window.resizable(False, False)
window.mainloop()
→ Ссылка