@sergeyokutsan

Почему возникает ошибка «NameError: name 'Root' is not defined»?

Вот мой код:
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
import math
import sys
root = TK()
Root.title("Калькулятор")
#значчение
bttn_list = [
    "7", "8", "9", "+", "*",
    "4", "5", "6", "-", "/",
    "1", "2", "3", "=", "xⁿ",
    "0", ".", "±",  "C",
    "Exit", "π", "sin", "cos",
    "(", ")","n!","√2", ]
#Кнопки
r = 1
c = 0
for i in bttn_list:
    rel = ""
    cmd=lambda x=i: calc(x)
    ttk.Button(root, text=i, command = cmd, width = 10).grid(row=r, column = c)
    c += 1
    if c > 4:
        c = 0
        r += 1
#поле ввода для цифр
calc_entry = Entry(root, width = 33)
calc_entry.grid(row=0, column=0, columnspan=5)
def calc(key):
    global memory
#Ошибки
    if key == "=":
        str1 = "-+0123456789.*/)(" 
        if calc_entry.get()[0] not in str1:
            calc_entry.insert(END, "Ошибка, не яявляется числом!")
            messagebox.showerror("Ошибка!", "Вы не ввели номер!")
        try:
            result = eval(calc_entry.get())
            calc_entry.insert(END, "=" + str(result))
        except:
            calc_entry.insert(END, "Ошибка")
            messagebox.showerror("Ошибка!", "Проверьте правильность введёных данных")
#Кнопка отчистки
    elif key == "C":
        calc_entry.delete(0, END)
#замена + на -
    elif key == "±":
        if "=" in calc_entry.get():
            calc_entry.delete(0, END)
        try:
            if calc_entry.get()[0] == "-":
                calc_entry.delete(0)
            else:
                calc_entry.insert(0, "-")
        except IndexError:
            pass
#Число пи
    elif key == "π":
        calc_entry.insert(END, math.pi)
#выход
    elif key == "Exit":
        root.after(1,root.destroy)
        sys.exit
#Степень
    elif key == "xⁿ":
        calc_entry.insert(END, "**")
#синус и косинус
    elif key == "sin":
        calc_entry.insert(END, "=" + str(math.sin(int(calc_entry.get()))))
    elif key == "cos":
        calc_entry.insert(END, "=" + str(math.cos(int(calc_entry.get()))))
#Скобкиelif key == "(":
        calc_entry.insert(END, "(")
    elif key == ")":
        calc_entry.insert(END, ")")
#Факториал из числа
    elif key == "n!":
        calc_entry.insert(END, "=" + str(math.factorial(int(calc_entry.get()))))
#Корень квадратный
    elif key == "√2":
        calc_entry.insert(END, "=" + str(math.sqrt(int(calc_entry.get()))))
#знак ровно
    else:
        if "=" in calc_entry.get():
            calc_entry.delete(0, END)
        calc_entry.insert(END, key)
root.mainloop()

Вылазит эта ошибка
Traceback (most recent call last):
  File "C:\Users\User\Desktop\calc.py", line 6, in <module>
    Root.title("Калькулятор")
NameError: name 'Root' is not defined
  • Вопрос задан
  • 6653 просмотра
Решения вопроса 3
Обратите внимание на регистр: root !== Root
Ответ написан
Комментировать
@Animkim
Питон вокруг меня
В - внимательность
root = TK()
Root.title("Калькулятор")

Если непонятно то root != Root
Ответ написан
Комментировать
@Getman_s
Разработчик с опытом более 30 лет
В python идентификаторы регистрозависимы. Root и root - не одно и тоже! Замените строку 6 на root.title("Калькулятор").
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы