как сделать так, чтобы поле ввода обнаруживало буквы и выдавало предупреждение "только числа" - PullRequest
0 голосов
/ 06 мая 2020
• 1000 число, но я получаю эту ошибку
_tkinter.TclError: expected floating-point number but got

это часть, которая касается ввода возраста

def show_frame2(self):

   try:

        if self.name.get() == "":
            self.warning.configure(text = "Please enter your name")
            self.NameEntry.focus()
        elif self.name.get().isalpha() == False:
            self.warning.configure(text = "Please enter text")
            self.NameEntry.delete(0, END)
            self.NameEntry.focus()

        elif self.AgeEntry.get() == "":
            self.warning.configure(text = "Please enter a number")
            self.AgeEntry.delete(0, END)
        elif self.age.get() > 14:
            self.warning.configure(text = "You are to old")
            self.AgeEntry.delete(0, END)
        elif self.age.get() <= 0:
            self.warning.configure(text = "Please enter a number number other than 0")
            self.age_entry.delete(0, END)
        elif self.age.get() <= 7:
            self.warning.configure(text = "Sorry, You are to young")
        else:
            self.frame1.grid_remove()
            self.frame2.grid(row = 1, columnspan = 4)
            self.next_problem()

    except ValueError:
        self.warning.configure(text = "Please enter a number")
        self.AgeEntry.delete(0,END)
        self.AgeEntry.focus()

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

self.age, вероятно, следует заменить на StrVar; затем выполните преобразование числа с плавающей запятой самостоятельно:

try:
    age = float(self.age.get())
except (ValueError, TypeError):
    # ... appropriate warning
0 голосов
/ 06 мая 2020

Вы должны изменить исключение ValueError на except _tkinter.TclError.

Это решит вашу проблему.

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