from tkinter import *
from tkinter import messagebox
from tkinter import ttk
root = Tk()
root.title("калькулятор")
#логика калькулятора
def calc(key):
global memory
if key == "=":
#исключение букв
strl = "-+0123456789.*/"
if calc.entry.get()[0] not in strl:
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
else:
if "=" in calc_entry.get():
calc_entry.delete(0, END)
calc_entry.insert(END, key)
# кнопки
bttn_list = [
"7", "8", "9","+", "-",
"4", "5", "6", "*", "/",
"1", "2", "3", "-/+", "=",
"0", ".", "C"
]
r=1
c=0
for i in bttn_list:
rel = ""
cmd = lambda x=i: calc(x)
ttk.Button(root, text=i, command=cmd).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)
root.mainloop()
Python
почему не работает код ???(Python3)
Во-первых, в одном месте стоит calc.entry вместо calc_entry.
Во-вторых, частично всё-таки работает: я ввёл с клавиатуры 6+4 и получил 10.
Полностью с кодом пока некогда разбираться.
Мне кажется, что я правильно восстановил отступы: здешний идиотский движок их убирает. Вот это у меня работает (чтобы сохранить отступы, заменяем пробелы на "&nb sp;" - пробел убрать):
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
root = Tk()
root.title("калькулятор")
#логика калькулятора
def calc(key):
global memory
if key == "=":
#исключение букв
strl = "-+0123456789.*/"
if calc_entry.get()[0] not in strl:
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
else:
if "=" in calc_entry.get():
calc_entry.delete(0, END)
calc_entry.insert(END, key)
# кнопки
bttn_list = [
"7", "8", "9","+", "-",
"4", "5", "6", "*", "/",
"1", "2", "3", "-/+", "=",
"0", ".", "C"
]
r=1
c=0
for i in bttn_list:
rel = ""
cmd = lambda x=i: calc(x)
ttk.Button(root, text=i, command=cmd).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)
root.mainloop()
Во-вторых, частично всё-таки работает: я ввёл с клавиатуры 6+4 и получил 10.
Полностью с кодом пока некогда разбираться.
Мне кажется, что я правильно восстановил отступы: здешний идиотский движок их убирает. Вот это у меня работает (чтобы сохранить отступы, заменяем пробелы на "&nb sp;" - пробел убрать):
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
root = Tk()
root.title("калькулятор")
#логика калькулятора
def calc(key):
global memory
if key == "=":
#исключение букв
strl = "-+0123456789.*/"
if calc_entry.get()[0] not in strl:
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
else:
if "=" in calc_entry.get():
calc_entry.delete(0, END)
calc_entry.insert(END, key)
# кнопки
bttn_list = [
"7", "8", "9","+", "-",
"4", "5", "6", "*", "/",
"1", "2", "3", "-/+", "=",
"0", ".", "C"
]
r=1
c=0
for i in bttn_list:
rel = ""
cmd = lambda x=i: calc(x)
ttk.Button(root, text=i, command=cmd).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)
root.mainloop()
это трудно читать, выложи сюда например gist.github.com
Похожие вопросы
- Почему не компилируется код?
- Не работает код Python
- Не работает код в python срочно помогите
- Почему неверно работает программа на python?
- Можете подсказать, почему код не работает?
- Почему код не работает python
- Задание с LeetCode через Python3
- ЛЮДИ ПОМОГИТЕ У МЕНЯ ЭТОТ КОД НЕ РАБОТАЕТ НУЖНА ПОМОЩЬ ПИТОН ЗАВТРА СДАТЬ НАДО
- Помогите написать программу на Python, моя версия кода на скрине, вроде всё работает, но автопроверка не проходит.
- Какие значения принимает s в balanced_parens(n-1). Как вообще работает этот код?
Сейчас попробую разными способами:
- напрямую
& - удвоил амперсэнд
& ; - удвоил амперсэнд и точку с запятой
\ \; - перед амперсэндом и точкой с запятой добавил обратный слэш.
Так что для того, чтобы движок не убирал пробелы, надо каждый пробел заменять на