Код не выполняется после a для l oop с предложениями if и else внутри - PullRequest
0 голосов
/ 23 января 2020

Пытался искать другие подобные вопросы, но не смог, вот мы go.

Я создаю приложение dektop с использованием библиотеки gui на python под названием tkinter. Ниже приведена одна из функций внутри кода, которая загружает полный кадр (который похож на страницу приложения) после нажатия кнопки. Он просто принимает кортеж с именем pom и (с помощью for l oop) отображает информацию в нем в кадре, в то время как он позволяет пользователю редактировать несколько значений с помощью входных записей.

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

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

 def edit_pom(pom):
    #Edit frame set up.
    editFrame.tkraise()
    IdLabel = tk.Label(editFrame, text=str("Editing "+str(pom[-1])), bg=FRAME_BG_COLOR, font=(FONT, 28), fg="white")
    IdLabel.place(relx=1/2, rely=1/45, relwidth=1, anchor="n")

    dataFrame = tk.Frame(editFrame, bg=FRAME_BG_COLOR)
    dataFrame.place(relx=1/2, rely=(1/20)+(1/6), width=WIDTH, relheight=1/2, anchor="n")

    titles = ["dummy","Time","Date","Description","Code","Minutes"]
    entries = []


    index = 1
    for i in pom:
        label1 = tk.Label(dataFrame, text=titles[index]+":", bg=FRAME_BG_COLOR, font=(FONT, 18), fg="white")
        label1.grid(row=index, column=0, sticky="W")

        if titles[index] == "Code" or titles[index] == "Description":
            Entry1 = tk.Entry(dataFrame)
            Entry1.grid(row=index, column=1, sticky="E")
            Entry1.insert(0, i)
            entries.append(Entry1)

        else:
            label2 = tk.Label(dataFrame, text=i, bg=FRAME_BG_COLOR, font=(FONT, 18), fg="white")
            label2.grid(row=index, column=1, sticky="E")

            label1.grid_columnconfigure(0, weight=10)
            label2.grid_columnconfigure(1, weight=10)

        index += 1

    print("This part is not being printed.")

1 Ответ

0 голосов
/ 23 января 2020

Понятия не имею, почему for l oop ведет себя так. Мое лучшее предположение состоит в том, что это связано с внутренним функционированием mainkin oop.

tkinter. В любом случае решение было вручную сломать для цикла:

index = 0
for i in pom:
    if index == 5:
        break

    label1 = tk.Label(dataFrame, text=titles[index]+":", bg=FRAME_BG_COLOR, font=(FONT, 18), fg="white")
    label1.grid(row=index, column=0, sticky="W")

    if titles[index] == "Code" or titles[index] == "Description":
        pass

    else:
        label2 = tk.Label(dataFrame, text=i, bg=FRAME_BG_COLOR, font=(FONT, 18), fg="white")
        label2.grid(row=index, column=1, sticky="E")

    index += 1
...