Проверка гласных на tkinter

avatar
O Z
8 августа 2021 в 22:17
50
1
0
root = Tk()
root.geometry("500x300")
root.title("Welcome to the vowel checker. - Logged in as: " + displayedtitle)

userWord = Entry(root, width= 50)
userWord.pack()

def vwlchck():
    letter = str
    for letter in userWord:
        if letter == 'A':
            continue
        elif letter == 'E':
            continue
        elif letter == 'I':
            continue
        elif letter == 'O':
                continue
        elif letter == 'U':
                continue
        else:
            vowllabel = Label(root, text=letter.get())
            vowllabel.pack()

thebutton = Button(root, text="Check Vowl", command=vwlchck)
thebutton.pack()

root.mainloop()

В основном я пытаюсь создать графический интерфейс tkinter, чтобы запросить у пользователя его имя пользователя (необходимое для других частей проекта), а затем попросить его написать что-нибудь в поле, а затем использовать цикл for для проверки букв, которые являются гласными , затем он отображает гласные в виде метки. Итак, в приведенном выше коде я продолжаю получать код ошибки, когда пытаюсь нажать кнопку «Проверить Vowl»:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Omar\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
  File "c:\Users\Omar\Desktop\python course\testing.py", line 25, in vwlchck
    for letter in userWord:
  File "C:\Users\Omar\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1652, in cget
    return self.tk.call(self._w, 'cget', '-' + key)
TypeError: can only concatenate str (not "int") to str

Я получаю эту ошибку только при попытке реализовать контрольную гласную в tkinter GUI, когда я использую обычную печать в консоли, он работает нормально...

Источник
martineau
8 августа 2021 в 22:37
1

Чтобы получить текущее значение userWord, используйте for letter in userWord.get():.

Karl Knechtel
8 августа 2021 в 23:34
0

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

Ответы (1)

avatar
Rolv Apneseth
8 августа 2021 в 23:23
1

Чтобы просто исправить ошибки в вашем коде, вам нужно, как указал @martineau, изменить for letter in Userword: на for letter in Userword.get().

Затем возникает другая ошибка из-за использования letter.get() при создании метки, поэтому просто удалите .get().


Не изменяя никаких других функций, вы можете использовать что-то вроде этого:

root = Tk()
root.geometry("500x300")
root.title("Welcome to the vowel checker. - Logged in as: " + displayedtitle)

userWord = Entry(root, width=50)
userWord.pack()


def vwlchck():
    for letter in userWord.get():
        if letter.upper() not in "AEIOU":
            vowllabel = Label(root, text=letter)
            vowllabel.pack()


thebutton = Button(root, text="Check Vowl", command=vwlchck)
thebutton.pack()

root.mainloop()

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