Есть ли способ остановить цикл ввода tkinter?

#python #loops #tkinter #conditional-statements

#python #циклы #tkinter #условные операторы

Вопрос:

Я создал цикл while for, который должен проверять, содержит ли запись 2, 3 или 4 в нем. Когда я попробовал цикл без поля ввода tkinter, он зациклился и остановился по мере необходимости. Когда я включил его в запись tkinter, он бесконечно зацикливается. Я совсем новичок в python tkinter и пытаюсь создать работающую систему.

Уже пробовал цикл без записи tkinter. Я исследовал уже несколько часов.

 from tkinter import *
def sentence():
    global text 
    text = musicEntry.get()
    musicEntry.delete(0,END)
    countIt = 0
    while countIt == 0:             
        for line in text:
            if line in "2" or line in "3" or line in "4":
                countIt = 1
                messagebox.showinfo("All is well. Please press the SUBMIT button to continue")
                break
        else:
            print("This doesn't work")

def checkPass():
    global musicEntry
    enterText = Tk()
    enterText.title ("Welcome to music chooser")
    Label(enterText, text = "Please enter the music text", bg="black", fg="white", font="none 12 bold") .grid(row=7, column = 0, sticky=W) 

    #Create a text entry box for music level
    musicEntry = Entry(enterText, width=75, bg="white")
    musicEntry.grid(row=8, column=0, sticky=W)
    validateButton = Button(enterText, text="Validate", width=6, command=sentence) .grid(row=9, column=0, sticky=W)
checkPass()
  

Я ожидаю, что проверка отловит недостающие 2, 3 или 4 при выполнении else, чтобы затем у меня мог быть messagebox для пользователя.

Комментарии:

1. line in "2" верно ровно для двух возможных значений line : "" и "2" . Единственное мыслимое значение, которое одновременно было бы in "2" , in "3" и in "4" , — это пустая строка. Вы, вероятно, хотите использовать "2" in line вместо этого.

2. Выбросьте свой цикл , сделайте if text and text in '234':

3. Я пробовал оба способа. Изменение 2 в строке, 3 в строке и 4 в строке дает тот же результат — непрерывный вывод «Это не работает». Затем я попробовал текст if и текст в ‘234’, и это дает непрерывный вывод для правильного и неправильного ввода.

4. Я решил это. Я не завершал цикл в инструкции else.