TypeError: int() argument must be a string, a bytes-like object or a number, not 'Label'

Novichok

Новичок
Пользователь
Янв 4, 2021
19
1
3
Просто решил вспомнить python! И как всегда не обошлось без ошибок! Простой код ведь? Но моя голова сказала что я тупой. Ладно... Вот код. И спаcите меня пожалуйста от этих мучений!
(Программа не дописана. Это 5% программы)
Весь ненужный код я удалил...

Python:
from tkinter import *
from tkinter import messagebox

root = Tk()
root.geometry("300x250")
root.title("...")

log = Label(text="Введите ваши данные\n", font=("Arial Bold", 15))

log_log = Label(text="Возраст:")
log_lodin = Entry()


button_enter = Button(text="Расcчитать!", command=lambda: ttt())
# =========================================================================
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=
# =========================================================================
log.pack()

log_log.pack()
log_lodin.pack()


button_enter.pack()
pop = [log_log]
p = int(pop[0])
def ttt():
    if p <= int(18):
        messagebox.showinfo("Привет!", "Вы вошли в систему!")
    else:
        messagebox.showinfo("Привет!", "Вы вошли в систему!")

root.mainloop()
Python 3.8
Windows 10 Pro
 

Wolkan

Пользователь
Пользователь
Дек 4, 2020
26
5
3
Код:

Python:
from tkinter import *

from tkinter import messagebox



root = Tk()

root.geometry("300x250")

root.title("...")



log = Label(text="Введите ваши данные\n", font=("Arial Bold", 15))



log_log = Label(text="Возраст:")

log_lodin = Entry()

pop = log_lodin.get()



log_password = Label(text="Размер кредита ")

log_password0 = Entry(show="*")

pop1 = log_password0.get()



log_password1 = Label(text="Зарплата: ")

log_password2 = Entry(show="*")

pop2 = log_password2.get()





button_enter = Button(text="Расcчитать!", command=lambda: ttt())

# =========================================================================

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=

# =========================================================================

log.pack()



log_log.pack()

log_lodin.pack()



log_password.pack()

log_password0.pack()



log_password1.pack()

log_password2.pack()



button_enter.pack()







def ttt():

    if int(pop) >= 18:

        chill = chill + 1

        messagebox.showinfo("Что-то", "Что-то")

    else:

        chill = chill + 0

        messagebox.showerror("Что-то", "Что-то")



root.mainloop()

В поле log_lodin я вписал 18.
Нажал кнопку рассчитать.
Ошибка:
C:\Users\user\AppData\Local\Programs\Python\Python38-32\python.exe D:/Users/user/Desktop/Kredit.py
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "D:/Users/user/Desktop/Kredit.py", line 23, in <lambda>
button_enter = Button(text="Расcчитать!", command=lambda: ttt())
File "D:/Users/user/Desktop/Kredit.py", line 43, in ttt
if int(pop) >= 18:

ValueError: invalid literal for int() with base 10: ''
Тебе нужно pop = log_lodin.get() делать в функции которая вызывается кнопкой. Так как у тебя сейчас написано, она считывает при запуске. А при запуске там ничего нет. Собственно это и к остальным вводам относится тоже.
И не знаю зачем тебе нужна переименная chill, но ее тоже нужно определить в функции до вызова.
 
  • Мне нравится
Реакции: Govard

Wolkan

Пользователь
Пользователь
Дек 4, 2020
26
5
3
И что ты хочешь сделать? Ты помещаешь Lable в int(). Lable служит просто для показа заложенного в него текста на экране. Для получения текста от пользователя есть виджет Entry. Если тебе надо получить возраст от пользователя, то в pop надо класть log_lodin, причем взяв от него текст методом .get().
 

Novichok

Новичок
Пользователь
Янв 4, 2021
19
1
3
И что ты хочешь сделать? Ты помещаешь Lable в int(). Lable служит просто для показа заложенного в него текста на экране. Для получения текста от пользователя есть виджет Entry. Если тебе надо получить возраст от пользователя, то в pop надо класть log_lodin, причем взяв от него текст методом .get().
Я тупой
 

Wolkan

Пользователь
Пользователь
Дек 4, 2020
26
5
3
Ну вот, изучай.
 

Novichok

Новичок
Пользователь
Янв 4, 2021
19
1
3
И что ты хочешь сделать? Ты помещаешь Lable в int(). Lable служит просто для показа заложенного в него текста на экране. Для получения текста от пользователя есть виджет Entry. Если тебе надо получить возраст от пользователя, то в pop надо класть log_lodin, причем взяв от него текст методом .get().
TypeError: int() argument must be a string, a bytes-like object or a number, not 'Entry'
Вылезла ошибка опять. Вот код который я изменил:
pop = {1: log_lodin}
p = pop.get(1)

def ttt():
if int(p) <= int(18):
messagebox.showinfo("Привет!", "Вы вошли в систему!")
else:
messagebox.showinfo("Привет!", "Вы вошли в систему!")
 

Novichok

Новичок
Пользователь
Янв 4, 2021
19
1
3
Я словарями плохо владею
 

Wolkan

Пользователь
Пользователь
Дек 4, 2020
26
5
3
Я словарями плохо владею
Тогда начни с основ лучше.
pop = {1: log_lodin.get()}
p = pop[1]
 

Novichok

Новичок
Пользователь
Янв 4, 2021
19
1
3
Вы мне очень помогли! Статья ОТЛИЧНАЯ! И последний вопрос(я больше не потревожу)
Ошибка:
ValueError: invalid literal for int() with base 10: ''
Код которым я заменил:
pop = log_lodin.get()

def ttt():
if int(pop) >= 100:
print("Что-то")
 

Wolkan

Пользователь
Пользователь
Дек 4, 2020
26
5
3
Вы мне очень помогли! Статья ОТЛИЧНАЯ! И последний вопрос(я больше не потревожу)
Ошибка:
ValueError: invalid literal for int() with base 10: ''
Код которым я заменил:
pop = log_lodin.get()

def ttt():
if int(pop) >= 100:
print("Что-то")
Похоже ты какой то символ неправильный ввел что он не может перевести это в число. Вводи просто число без пробелов и других символов.
 

Novichok

Новичок
Пользователь
Янв 4, 2021
19
1
3
Похоже ты какой то символ неправильный ввел что он не может перевести это в число. Вводи просто число без пробелов и других символов.
Нет... Всё пробовал... И 100 и 11 и 54 и т. д. ничего не помогает...
 

Wolkan

Пользователь
Пользователь
Дек 4, 2020
26
5
3
Нет... Всё пробовал... И 100 и 11 и 54 и т. д. ничего не помогает...
Пришли код, что вводишь и ошибку.
 

Novichok

Новичок
Пользователь
Янв 4, 2021
19
1
3
Код:

Python:
from tkinter import *

from tkinter import messagebox



root = Tk()

root.geometry("300x250")

root.title("...")



log = Label(text="Введите ваши данные\n", font=("Arial Bold", 15))



log_log = Label(text="Возраст:")

log_lodin = Entry()

pop = log_lodin.get()



log_password = Label(text="Размер кредита ")

log_password0 = Entry(show="*")

pop1 = log_password0.get()



log_password1 = Label(text="Зарплата: ")

log_password2 = Entry(show="*")

pop2 = log_password2.get()





button_enter = Button(text="Расcчитать!", command=lambda: ttt())

# =========================================================================

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=

# =========================================================================

log.pack()



log_log.pack()

log_lodin.pack()



log_password.pack()

log_password0.pack()



log_password1.pack()

log_password2.pack()



button_enter.pack()







def ttt():

    if int(pop) >= 18:

        chill = chill + 1

        messagebox.showinfo("Что-то", "Что-то")

    else:

        chill = chill + 0

        messagebox.showerror("Что-то", "Что-то")



root.mainloop()

В поле log_lodin я вписал 18.
Нажал кнопку рассчитать.
Ошибка:
C:\Users\user\AppData\Local\Programs\Python\Python38-32\python.exe D:/Users/user/Desktop/Kredit.py
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "D:/Users/user/Desktop/Kredit.py", line 23, in <lambda>
button_enter = Button(text="Расcчитать!", command=lambda: ttt())
File "D:/Users/user/Desktop/Kredit.py", line 43, in ttt
if int(pop) >= 18:

ValueError: invalid literal for int() with base 10: ''
 

Форум IT Специалистов