import subprocess
subprocess.call('calc')
Тут не вопрос, тут просьба о помощи, помочь решить задачу.!!!)))В чем конкретно вопрос? Берешь tkinter например и пишешь
Вот самый простой пример:
Python:import subprocess subprocess.call('calc')
Мой код, но он не похож на калькулятор Windows, и в нем не работают кнопки, 1/x, x2. И кнопку бы =, увеличить до границы, кнопки +.
Python:import tkinter as tk import math def add_digit(digit): value=calc.get() if value[0]=="0": value=value[1:] calc.delete(0,tk.END) calc.insert(0,value+digit) def add_operation(operation): value = calc.get() if value[-1] in "-+/*": value = value[:-1] elif "+" in value or "-" in value or '/' in value or '*' in value: calculate() value = calc.get() calc.delete(0, tk.END) calc.insert(0, value+operation) def calculate(): value=calc.get() if value[-1] in "+-/*": value = value+value[:-1] calc.delete(0, tk.END) calc.insert(0, eval(value)) def clear(): calc.delete(0, tk.END) calc.insert(0,0) def abbreviation(digit): return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit)) def abbreviation_operation_button(operation): return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation)) def abbreviation_calc_button(operation): return tk.Button(text=operation, bd=5, command=calculate) def abbreviation_clear_button(operation): return tk.Button(text=operation, bd=5, command=clear) root=tk.Tk() root["bg"] = "" root.title("Калькулятор") root.wm_attributes("-alpha", 1) root.geometry("260x417") root.resizable(width=False, height=False) calc=tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15),width=15) calc.insert(0,"0") calc.grid(row=0, column=0, columnspan=4,stick="we", padx=5) abbreviation_clear_button("C").grid(row=1, column=0, stick="wens", pady=2, padx=2) abbreviation("1/x").grid(row=1, column=1, stick="wens", pady=2, padx=2) abbreviation("x2").grid(row=1, column=2, stick="wens", pady=2, padx=2) abbreviation("7").grid(row=2, column=0, stick="wens", pady=2, padx=2) abbreviation("8").grid(row=2, column=1, stick="wens", pady=2, padx=2) abbreviation("9").grid(row=2, column=2, stick="wens", pady=2, padx=2) abbreviation("4").grid(row=3, column=0, stick="wens", pady=2, padx=2) abbreviation("5").grid(row=3, column=1, stick="wens", pady=2, padx=2) abbreviation("6").grid(row=3, column=2, stick="wens", pady=2, padx=2) abbreviation("1").grid(row=4, column=0, stick="wens", pady=2, padx=2) abbreviation("2").grid(row=4, column=1, stick="wens", pady=2, padx=2) abbreviation("3").grid(row=4, column=2, stick="wens", pady=2, padx=2) abbreviation("0").grid(row=5, column=0, stick="wens", pady=2, padx=2) abbreviation_operation_button("/").grid(row=1, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("*").grid(row=2, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("-").grid(row=3, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("+").grid(row=4, column=3, stick="wens", pady=2, padx=2) abbreviation_calc_button("=").grid(row=5, column=1, stick="wens", pady=2, padx=2) root.grid_columnconfigure(0,minsize=65) root.grid_columnconfigure(1,minsize=65) root.grid_columnconfigure(2,minsize=65) root.grid_columnconfigure(3,minsize=65) root.grid_columnconfigure(4,minsize=65) root.grid_rowconfigure(1,minsize=65) root.grid_rowconfigure(2,minsize=65) root.grid_rowconfigure(3,minsize=65) root.grid_rowconfigure(4,minsize=65) root.grid_rowconfigure(5,minsize=65) root.grid_rowconfigure(6,minsize=65) root.mainloop()
import tkinter as tk
import math
def add_digit(digit):
value=calc.get()
if value[0]=="0":
value=value[1:]
calc.delete(0,tk.END)
calc.insert(0,value+digit)
def add_operation(operation):
value = calc.get()
if value[-1] in "-+/*":
value = value[:-1]
elif "+" in value or "-" in value or '/' in value or '*' in value:
calculate()
value = calc.get()
calc.delete(0, tk.END)
calc.insert(0, value+operation)
def calculate():
value=calc.get()
if value[-1] in "+-/*":
value = value+value[:-1]
calc.delete(0, tk.END)
calc.insert(0, eval(value))
def clear():
calc.delete(0, tk.END)
calc.insert(0,0)
def abbreviation(digit):
return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit))
def abbreviation_operation_button(operation):
return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation))
def abbreviation_calc_button(operation):
return tk.Button(text=operation, bd=5, command=calculate)
def abbreviation_clear_button(operation):
return tk.Button(text=operation, bd=5, command=clear)
root=tk.Tk()
root["bg"] = ""
root.title("Калькулятор")
root.wm_attributes("-alpha", 1)
root.geometry("260x357")
root.resizable(width=False, height=False)
calc=tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15),width=15)
calc.insert(0,"0")
calc.grid(row=0, column=0, columnspan=4,stick="we", padx=5)
abbreviation("7").grid(row=2, column=0, stick="wens", pady=2, padx=2)
abbreviation("8").grid(row=2, column=1, stick="wens", pady=2, padx=2)
abbreviation("9").grid(row=2, column=2, stick="wens", pady=2, padx=2)
abbreviation("4").grid(row=3, column=0, stick="wens", pady=2, padx=2)
abbreviation("5").grid(row=3, column=1, stick="wens", pady=2, padx=2)
abbreviation("6").grid(row=3, column=2, stick="wens", pady=2, padx=2)
abbreviation("1").grid(row=4, column=0, stick="wens", pady=2, padx=2)
abbreviation("2").grid(row=4, column=1, stick="wens", pady=2, padx=2)
abbreviation("3").grid(row=4, column=2, stick="wens", pady=2, padx=2)
abbreviation("0").grid(row=5, column=0, columnspan=2, stick="wens", pady=2, padx=2)
abbreviation_clear_button("C").grid(row=1, column=0, stick="wens", pady=2, padx=2)
abbreviation_operation_button("1/x").grid(row=1, column=1, stick="wens", pady=2, padx=2)
abbreviation_operation_button("x2").grid(row=1, column=2, stick="wens", pady=2, padx=2)
abbreviation_operation_button("/").grid(row=1, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("*").grid(row=2, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("-").grid(row=3, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("+").grid(row=4, column=3, stick="wens", pady=2, padx=2)
abbreviation_calc_button("=").grid(row=5, column=2, columnspan=2, stick="wens", pady=2, padx=2)
root.grid_columnconfigure(0,minsize=65)
root.grid_columnconfigure(1,minsize=65)
root.grid_columnconfigure(2,minsize=65)
root.grid_columnconfigure(3,minsize=65)
root.grid_columnconfigure(4,minsize=65)
root.grid_rowconfigure(1,minsize=65)
root.grid_rowconfigure(2,minsize=65)
root.grid_rowconfigure(3,minsize=65)
root.grid_rowconfigure(4,minsize=65)
root.grid_rowconfigure(5,minsize=65)
root.grid_rowconfigure(6,minsize=65)
root.mainloop()
Посмотрите пожалуйста)))Чтобы растянуть элемент на несколько колонок можно задать columnspan (Сколько колонок)
А чтобы кнопки работали, можешь заменить их на другие значки, например & или $.
Хотя бы я менял по какой логике работает определение какие операции использовать
Чтобы растянуть элемент на несколько колонок можно задать columnspan (Сколько колонок)
А чтобы кнопки работали, можешь заменить их на другие значки, например & или $.
Хотя бы я менял по какой логике работает определение какие операции использовать
Здравстуйте еще раз))) А можно полный рабочий код.??))) Что-то не работает у меня.(((Чтобы растянуть элемент на несколько колонок можно задать columnspan (Сколько колонок)
А чтобы кнопки работали, можешь заменить их на другие значки, например & или $.
Хотя бы я менял по какой логике работает определение какие операции использовать
import tkinter as tk
import math
def add_digit(digit):
value = calc.get()
if value[0] == "0":
value = value[1:]
calc.delete(0, tk.END)
calc.insert(0, value+digit)
def add_operation(operation):
value = calc.get()
print(value)
if value[-1] in "-+/*":
value = value[:-1]
elif operation == '1/x':
operation = ''
value = f"1/({value})"
elif operation == 'x2':
operation = ''
value = f"2*({value})"
elif "+" in value or "-" in value or '/' in value or '*' in value:
calculate()
value = calc.get()
calc.delete(0, tk.END)
calc.insert(0, value+operation)
def calculate():
value = calc.get()
if value[-1] in "+-/*":
value = value+value[:-1]
calc.delete(0, tk.END)
calc.insert(0, eval(value))
def clear():
calc.delete(0, tk.END)
calc.insert(0, 0)
def abbreviation(digit):
return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit))
def abbreviation_operation_button(operation):
return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation))
def abbreviation_calc_button(operation):
return tk.Button(text=operation, bd=5, command=calculate)
def abbreviation_clear_button(operation):
return tk.Button(text=operation, bd=5, command=clear)
root = tk.Tk()
root["bg"] = ""
root.title("Калькулятор")
root.wm_attributes("-alpha", 1)
root.geometry("260x357")
root.resizable(width=False, height=False)
calc = tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15), width=15)
calc.insert(0, "0")
calc.grid(row=0, column=0, columnspan=4, stick="we", padx=5)
abbreviation("7").grid(row=2, column=0, stick="wens", pady=2, padx=2)
abbreviation("8").grid(row=2, column=1, stick="wens", pady=2, padx=2)
abbreviation("9").grid(row=2, column=2, stick="wens", pady=2, padx=2)
abbreviation("4").grid(row=3, column=0, stick="wens", pady=2, padx=2)
abbreviation("5").grid(row=3, column=1, stick="wens", pady=2, padx=2)
abbreviation("6").grid(row=3, column=2, stick="wens", pady=2, padx=2)
abbreviation("1").grid(row=4, column=0, stick="wens", pady=2, padx=2)
abbreviation("2").grid(row=4, column=1, stick="wens", pady=2, padx=2)
abbreviation("3").grid(row=4, column=2, stick="wens", pady=2, padx=2)
abbreviation("0").grid(row=5, column=0, columnspan=2,
stick="wens", pady=2, padx=2)
abbreviation_clear_button("C").grid(
row=1, column=0, stick="wens", pady=2, padx=2)
abbreviation_operation_button(
"1/x").grid(row=1, column=1, stick="wens", pady=2, padx=2)
abbreviation_operation_button("x2").grid(
row=1, column=2, stick="wens", pady=2, padx=2)
abbreviation_operation_button(
"/").grid(row=1, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button(
"*").grid(row=2, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button(
"-").grid(row=3, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button(
"+").grid(row=4, column=3, stick="wens", pady=2, padx=2)
abbreviation_calc_button("=").grid(
row=5, column=2, columnspan=2, stick="wens", pady=2, padx=2)
root.grid_columnconfigure(0, minsize=65)
root.grid_columnconfigure(1, minsize=65)
root.grid_columnconfigure(2, minsize=65)
root.grid_columnconfigure(3, minsize=65)
root.grid_columnconfigure(4, minsize=65)
root.grid_rowconfigure(1, minsize=65)
root.grid_rowconfigure(2, minsize=65)
root.grid_rowconfigure(3, minsize=65)
root.grid_rowconfigure(4, minsize=65)
root.grid_rowconfigure(5, minsize=65)
root.grid_rowconfigure(6, minsize=65)
root.mainloop()
Работает, но надо немного по другому, например нажал кнопку 5 потом 1/x и сразу нужен результат 0,2, и также со второй кнопкой нажал кнопку 5 потом x2 и сразу результат 25. Помогите, больше некому.)))Ну вот например рабочий, это из твоего предыдущего поста с доработанной функцией add_operation:
Python:import tkinter as tk import math def add_digit(digit): value = calc.get() if value[0] == "0": value = value[1:] calc.delete(0, tk.END) calc.insert(0, value+digit) def add_operation(operation): value = calc.get() print(value) if value[-1] in "-+/*": value = value[:-1] elif operation == '1/x': operation = '' value = f"1/({value})" elif operation == 'x2': operation = '' value = f"2*({value})" elif "+" in value or "-" in value or '/' in value or '*' in value: calculate() value = calc.get() calc.delete(0, tk.END) calc.insert(0, value+operation) def calculate(): value = calc.get() if value[-1] in "+-/*": value = value+value[:-1] calc.delete(0, tk.END) calc.insert(0, eval(value)) def clear(): calc.delete(0, tk.END) calc.insert(0, 0) def abbreviation(digit): return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit)) def abbreviation_operation_button(operation): return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation)) def abbreviation_calc_button(operation): return tk.Button(text=operation, bd=5, command=calculate) def abbreviation_clear_button(operation): return tk.Button(text=operation, bd=5, command=clear) root = tk.Tk() root["bg"] = "" root.title("Калькулятор") root.wm_attributes("-alpha", 1) root.geometry("260x357") root.resizable(width=False, height=False) calc = tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15), width=15) calc.insert(0, "0") calc.grid(row=0, column=0, columnspan=4, stick="we", padx=5) abbreviation("7").grid(row=2, column=0, stick="wens", pady=2, padx=2) abbreviation("8").grid(row=2, column=1, stick="wens", pady=2, padx=2) abbreviation("9").grid(row=2, column=2, stick="wens", pady=2, padx=2) abbreviation("4").grid(row=3, column=0, stick="wens", pady=2, padx=2) abbreviation("5").grid(row=3, column=1, stick="wens", pady=2, padx=2) abbreviation("6").grid(row=3, column=2, stick="wens", pady=2, padx=2) abbreviation("1").grid(row=4, column=0, stick="wens", pady=2, padx=2) abbreviation("2").grid(row=4, column=1, stick="wens", pady=2, padx=2) abbreviation("3").grid(row=4, column=2, stick="wens", pady=2, padx=2) abbreviation("0").grid(row=5, column=0, columnspan=2, stick="wens", pady=2, padx=2) abbreviation_clear_button("C").grid( row=1, column=0, stick="wens", pady=2, padx=2) abbreviation_operation_button( "1/x").grid(row=1, column=1, stick="wens", pady=2, padx=2) abbreviation_operation_button("x2").grid( row=1, column=2, stick="wens", pady=2, padx=2) abbreviation_operation_button( "/").grid(row=1, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button( "*").grid(row=2, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button( "-").grid(row=3, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button( "+").grid(row=4, column=3, stick="wens", pady=2, padx=2) abbreviation_calc_button("=").grid( row=5, column=2, columnspan=2, stick="wens", pady=2, padx=2) root.grid_columnconfigure(0, minsize=65) root.grid_columnconfigure(1, minsize=65) root.grid_columnconfigure(2, minsize=65) root.grid_columnconfigure(3, minsize=65) root.grid_columnconfigure(4, minsize=65) root.grid_rowconfigure(1, minsize=65) root.grid_rowconfigure(2, minsize=65) root.grid_rowconfigure(3, minsize=65) root.grid_rowconfigure(4, minsize=65) root.grid_rowconfigure(5, minsize=65) root.grid_rowconfigure(6, minsize=65) root.mainloop()
Дали такую задачу, реализовать, вот эти кнопки, число 1 деленное на любое число, тоесть 1/x, и квадрат числа, тоесть x2.Ну вот например рабочий, это из твоего предыдущего поста с доработанной функцией add_operation:
Python:import tkinter as tk import math def add_digit(digit): value = calc.get() if value[0] == "0": value = value[1:] calc.delete(0, tk.END) calc.insert(0, value+digit) def add_operation(operation): value = calc.get() print(value) if value[-1] in "-+/*": value = value[:-1] elif operation == '1/x': operation = '' value = f"1/({value})" elif operation == 'x2': operation = '' value = f"2*({value})" elif "+" in value or "-" in value or '/' in value or '*' in value: calculate() value = calc.get() calc.delete(0, tk.END) calc.insert(0, value+operation) def calculate(): value = calc.get() if value[-1] in "+-/*": value = value+value[:-1] calc.delete(0, tk.END) calc.insert(0, eval(value)) def clear(): calc.delete(0, tk.END) calc.insert(0, 0) def abbreviation(digit): return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit)) def abbreviation_operation_button(operation): return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation)) def abbreviation_calc_button(operation): return tk.Button(text=operation, bd=5, command=calculate) def abbreviation_clear_button(operation): return tk.Button(text=operation, bd=5, command=clear) root = tk.Tk() root["bg"] = "" root.title("Калькулятор") root.wm_attributes("-alpha", 1) root.geometry("260x357") root.resizable(width=False, height=False) calc = tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15), width=15) calc.insert(0, "0") calc.grid(row=0, column=0, columnspan=4, stick="we", padx=5) abbreviation("7").grid(row=2, column=0, stick="wens", pady=2, padx=2) abbreviation("8").grid(row=2, column=1, stick="wens", pady=2, padx=2) abbreviation("9").grid(row=2, column=2, stick="wens", pady=2, padx=2) abbreviation("4").grid(row=3, column=0, stick="wens", pady=2, padx=2) abbreviation("5").grid(row=3, column=1, stick="wens", pady=2, padx=2) abbreviation("6").grid(row=3, column=2, stick="wens", pady=2, padx=2) abbreviation("1").grid(row=4, column=0, stick="wens", pady=2, padx=2) abbreviation("2").grid(row=4, column=1, stick="wens", pady=2, padx=2) abbreviation("3").grid(row=4, column=2, stick="wens", pady=2, padx=2) abbreviation("0").grid(row=5, column=0, columnspan=2, stick="wens", pady=2, padx=2) abbreviation_clear_button("C").grid( row=1, column=0, stick="wens", pady=2, padx=2) abbreviation_operation_button( "1/x").grid(row=1, column=1, stick="wens", pady=2, padx=2) abbreviation_operation_button("x2").grid( row=1, column=2, stick="wens", pady=2, padx=2) abbreviation_operation_button( "/").grid(row=1, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button( "*").grid(row=2, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button( "-").grid(row=3, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button( "+").grid(row=4, column=3, stick="wens", pady=2, padx=2) abbreviation_calc_button("=").grid( row=5, column=2, columnspan=2, stick="wens", pady=2, padx=2) root.grid_columnconfigure(0, minsize=65) root.grid_columnconfigure(1, minsize=65) root.grid_columnconfigure(2, minsize=65) root.grid_columnconfigure(3, minsize=65) root.grid_columnconfigure(4, minsize=65) root.grid_rowconfigure(1, minsize=65) root.grid_rowconfigure(2, minsize=65) root.grid_rowconfigure(3, minsize=65) root.grid_rowconfigure(4, minsize=65) root.grid_rowconfigure(5, minsize=65) root.grid_rowconfigure(6, minsize=65) root.mainloop()
def add_operation(operation):
value = calc.get()
print(value)
if operation == '1/x':
operation = ''
calculate()
value = calc.get()
value = str(1/float(value))
elif operation == 'x²':
operation = ''
calculate()
value = calc.get()
value = str(float(value)**2)
elif value[-1] in "-+/*":
value = value[:-1]
elif "+" in value or "-" in value or '/' in value or '*' in value:
calculate()
value = calc.get()
calc.delete(0, tk.END)
calc.insert(0, value+operation)
Спасибо Вам большое!!!))) Премного Вам благодарен, а можно Вас попросить, помогите пожалуйста, со вторым калькулятором, во вложении сверху.Замени add_operation на это:
Python:def add_operation(operation): value = calc.get() print(value) if operation == '1/x': operation = '' calculate() value = calc.get() value = str(1/float(value)) elif operation == 'x²': operation = '' calculate() value = calc.get() value = str(float(value)**2) elif value[-1] in "-+/*": value = value[:-1] elif "+" in value or "-" in value or '/' in value or '*' in value: calculate() value = calc.get() calc.delete(0, tk.END) calc.insert(0, value+operation)
Почти сделал, только есть один момент, кнопка √ в отличии от Калькулятора Windows, прибавляет на одну цифру, при повторном нажатии, как убрать этот момент. И помогите, с кнопками ±, ←, кнопка ± положительное число в отрицательное и наоборот, и кнопка ← убирает значение, например 123 стало 12, или 1, стало 0. И как в коде прописать дополнительные кнопки: [√] (код=8730), [±] (код=177), [←] (код=8592), [÷] (код=247), чтоб они брали коды с таблицы символов.??)))Замени add_operation на это:Python:import tkinter as tk from math import * def add_digit(digit): value=calc.get() if value[0]=="0": value=value[1:] calc.delete(0,tk.END) calc.insert(0,value+digit) def add_operation(operation): value = calc.get() if operation == "1/x": operation = "" calculate() value = calc.get() value = str(1/float(value)) elif operation == "x2": operation = "" calculate() value = calc.get() value = str(float(value)**2) elif operation == "√": operation = "" calculate() value = calc.get() value = str(float(value)**0.5) elif value[-1] in "-+/*": value = value[:-1] elif "+" in value or "-" in value or "/" in value or "*" in value: calculate() value = calc.get() calc.delete(0, tk.END) calc.insert(0, value+operation) def calculate(): value=calc.get() if value[-1] in "+-/*": value = value+value[:-1] calc.delete(0, tk.END) calc.insert(0, eval(value)) def clear(): calc.delete(0, tk.END) calc.insert(0,0) def abbreviation(digit): return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit)) def abbreviation_operation_button(operation): return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation)) def abbreviation_calc_button(operation): return tk.Button(text=operation, bd=5, command=calculate) def abbreviation_clear_button(operation): return tk.Button(text=operation, bd=5, command=clear) root=tk.Tk() root["bg"] = "" root.title("Калькулятор") root.wm_attributes("-alpha", 1) root.geometry("260x417") root.resizable(width=False, height=False) calc=tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15),width=15) calc.insert(0,"0") calc.grid(row=0, column=0, columnspan=4,stick="we", padx=5) abbreviation("7").grid(row=3, column=0, stick="wens", pady=2, padx=2) abbreviation("8").grid(row=3, column=1, stick="wens", pady=2, padx=2) abbreviation("9").grid(row=3, column=2, stick="wens", pady=2, padx=2) abbreviation("4").grid(row=4, column=0, stick="wens", pady=2, padx=2) abbreviation("5").grid(row=4, column=1, stick="wens", pady=2, padx=2) abbreviation("6").grid(row=4, column=2, stick="wens", pady=2, padx=2) abbreviation("1").grid(row=5, column=0, stick="wens", pady=2, padx=2) abbreviation("2").grid(row=5, column=1, stick="wens", pady=2, padx=2) abbreviation("3").grid(row=5, column=2, stick="wens", pady=2, padx=2) abbreviation("0").grid(row=6, column=1, stick="wens", pady=2, padx=2) abbreviation_clear_button("C").grid(row=2, column=1, stick="wens", pady=2, padx=2) abbreviation_operation_button("x2").grid(row=1, column=0, columnspan=2, stick="wens", pady=2, padx=2) abbreviation_operation_button("1/x").grid(row=1, column=2, columnspan=2, stick="wens", pady=2, padx=2) abbreviation_operation_button("←").grid(row=2, column=2, stick="wens", pady=2, padx=2) abbreviation_operation_button("√").grid(row=2, column=0, stick="wens", pady=2, padx=2) abbreviation_operation_button("/").grid(row=2, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("±").grid(row=6, column=0, stick="wens", pady=2, padx=2) abbreviation_operation_button("*").grid(row=3, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("-").grid(row=4, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("+").grid(row=5, column=3, stick="wens", pady=2, padx=2) abbreviation_calc_button("=").grid(row=6, column=2, columnspan=2, stick="wens", pady=2, padx=2) root.grid_columnconfigure(0,minsize=65) root.grid_columnconfigure(1,minsize=65) root.grid_columnconfigure(2,minsize=65) root.grid_columnconfigure(3,minsize=65) root.grid_columnconfigure(4,minsize=65) root.grid_rowconfigure(1,minsize=65) root.grid_rowconfigure(2,minsize=65) root.grid_rowconfigure(3,minsize=65) root.grid_rowconfigure(4,minsize=65) root.grid_rowconfigure(5,minsize=65) root.grid_rowconfigure(6,minsize=65) root.mainloop()
Python:def add_operation(operation): value = calc.get() print(value) if operation == '1/x': operation = '' calculate() value = calc.get() value = str(1/float(value)) elif operation == 'x²': operation = '' calculate() value = calc.get() value = str(float(value)**2) elif value[-1] in "-+/*": value = value[:-1] elif "+" in value or "-" in value or '/' in value or '*' in value: calculate() value = calc.get() calc.delete(0, tk.END) calc.insert(0, value+operation)
Почти сделал, только есть один момент, кнопка √ в отличии от Калькулятора Windows, прибавляет на одну цифру, при повторном нажатии, как убрать этот момент. И помогите, с кнопками ±, ←, кнопка ± положительное число в отрицательное и наоборот, и кнопка ← убирает значение, например 123 стало 12, или 1, стало 0. И как в коде прописать дополнительные кнопки: [√] (код=8730), [±] (код=177), [←] (код=8592), [÷] (код=247), чтоб они брали коды с таблицы символов.??)))
import tkinter as tk
from math import *
def add_digit(digit):
value=calc.get()
if value[0]=="0":
value=value[1:]
calc.delete(0,tk.END)
calc.insert(0,value+digit)
def add_operation(operation):
value = calc.get()
if operation == "1/x":
operation = ""
calculate()
value = calc.get()
value = str(1/float(value))
elif operation == "x2":
operation = ""
calculate()
value = calc.get()
value = str(float(value)**2)
elif operation == "√":
operation = ""
calculate()
value = calc.get()
value = str(float(value)**0.5)
elif value[-1] in "-+/*":
value = value[:-1]
elif "+" in value or "-" in value or "/" in value or "*" in value:
calculate()
value = calc.get()
calc.delete(0, tk.END)
calc.insert(0, value+operation)
def calculate():
value=calc.get()
if value[-1] in "+-/*":
value = value+value[:-1]
calc.delete(0, tk.END)
calc.insert(0, eval(value))
def clear():
calc.delete(0, tk.END)
calc.insert(0,0)
def abbreviation(digit):
return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit))
def abbreviation_operation_button(operation):
return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation))
def abbreviation_calc_button(operation):
return tk.Button(text=operation, bd=5, command=calculate)
def abbreviation_clear_button(operation):
return tk.Button(text=operation, bd=5, command=clear)
root=tk.Tk()
root["bg"] = ""
root.title("Калькулятор")
root.wm_attributes("-alpha", 1)
root.geometry("260x417")
root.resizable(width=False, height=False)
calc=tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15),width=15)
calc.insert(0,"0")
calc.grid(row=0, column=0, columnspan=4,stick="we", padx=5)
abbreviation("7").grid(row=3, column=0, stick="wens", pady=2, padx=2)
abbreviation("8").grid(row=3, column=1, stick="wens", pady=2, padx=2)
abbreviation("9").grid(row=3, column=2, stick="wens", pady=2, padx=2)
abbreviation("4").grid(row=4, column=0, stick="wens", pady=2, padx=2)
abbreviation("5").grid(row=4, column=1, stick="wens", pady=2, padx=2)
abbreviation("6").grid(row=4, column=2, stick="wens", pady=2, padx=2)
abbreviation("1").grid(row=5, column=0, stick="wens", pady=2, padx=2)
abbreviation("2").grid(row=5, column=1, stick="wens", pady=2, padx=2)
abbreviation("3").grid(row=5, column=2, stick="wens", pady=2, padx=2)
abbreviation("0").grid(row=6, column=1, stick="wens", pady=2, padx=2)
abbreviation_clear_button("C").grid(row=2, column=1, stick="wens", pady=2, padx=2)
abbreviation_operation_button("x2").grid(row=1, column=0, columnspan=2, stick="wens", pady=2, padx=2)
abbreviation_operation_button("1/x").grid(row=1, column=2, columnspan=2, stick="wens", pady=2, padx=2)
abbreviation_operation_button("←").grid(row=2, column=2, stick="wens", pady=2, padx=2)
abbreviation_operation_button("√").grid(row=2, column=0, stick="wens", pady=2, padx=2)
abbreviation_operation_button("/").grid(row=2, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("±").grid(row=6, column=0, stick="wens", pady=2, padx=2)
abbreviation_operation_button("*").grid(row=3, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("-").grid(row=4, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("+").grid(row=5, column=3, stick="wens", pady=2, padx=2)
abbreviation_calc_button("=").grid(row=6, column=2, columnspan=2, stick="wens", pady=2, padx=2)
root.grid_columnconfigure(0,minsize=65)
root.grid_columnconfigure(1,minsize=65)
root.grid_columnconfigure(2,minsize=65)
root.grid_columnconfigure(3,minsize=65)
root.grid_columnconfigure(4,minsize=65)
root.grid_rowconfigure(1,minsize=65)
root.grid_rowconfigure(2,minsize=65)
root.grid_rowconfigure(3,minsize=65)
root.grid_rowconfigure(4,minsize=65)
root.grid_rowconfigure(5,minsize=65)
root.grid_rowconfigure(6,minsize=65)
root.mainloop()
кнопка ← бери срез от первого элемента value до предпоследнего (value[:-1])Вот мой код.Python:import tkinter as tk from math import * def add_digit(digit): value=calc.get() if value[0]=="0": value=value[1:] calc.delete(0,tk.END) calc.insert(0,value+digit) def add_operation(operation): value = calc.get() if operation == "1/x": operation = "" calculate() value = calc.get() value = str(1/float(value)) elif operation == "x2": operation = "" calculate() value = calc.get() value = str(float(value)**2) elif operation == "√": operation = "" calculate() value = calc.get() value = str(float(value)**0.5) elif value[-1] in "-+/*": value = value[:-1] elif "+" in value or "-" in value or "/" in value or "*" in value: calculate() value = calc.get() calc.delete(0, tk.END) calc.insert(0, value+operation) def calculate(): value=calc.get() if value[-1] in "+-/*": value = value+value[:-1] calc.delete(0, tk.END) calc.insert(0, eval(value)) def clear(): calc.delete(0, tk.END) calc.insert(0,0) def abbreviation(digit): return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit)) def abbreviation_operation_button(operation): return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation)) def abbreviation_calc_button(operation): return tk.Button(text=operation, bd=5, command=calculate) def abbreviation_clear_button(operation): return tk.Button(text=operation, bd=5, command=clear) root=tk.Tk() root["bg"] = "" root.title("Калькулятор") root.wm_attributes("-alpha", 1) root.geometry("260x417") root.resizable(width=False, height=False) calc=tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15),width=15) calc.insert(0,"0") calc.grid(row=0, column=0, columnspan=4,stick="we", padx=5) abbreviation("7").grid(row=3, column=0, stick="wens", pady=2, padx=2) abbreviation("8").grid(row=3, column=1, stick="wens", pady=2, padx=2) abbreviation("9").grid(row=3, column=2, stick="wens", pady=2, padx=2) abbreviation("4").grid(row=4, column=0, stick="wens", pady=2, padx=2) abbreviation("5").grid(row=4, column=1, stick="wens", pady=2, padx=2) abbreviation("6").grid(row=4, column=2, stick="wens", pady=2, padx=2) abbreviation("1").grid(row=5, column=0, stick="wens", pady=2, padx=2) abbreviation("2").grid(row=5, column=1, stick="wens", pady=2, padx=2) abbreviation("3").grid(row=5, column=2, stick="wens", pady=2, padx=2) abbreviation("0").grid(row=6, column=1, stick="wens", pady=2, padx=2) abbreviation_clear_button("C").grid(row=2, column=1, stick="wens", pady=2, padx=2) abbreviation_operation_button("x2").grid(row=1, column=0, columnspan=2, stick="wens", pady=2, padx=2) abbreviation_operation_button("1/x").grid(row=1, column=2, columnspan=2, stick="wens", pady=2, padx=2) abbreviation_operation_button("←").grid(row=2, column=2, stick="wens", pady=2, padx=2) abbreviation_operation_button("√").grid(row=2, column=0, stick="wens", pady=2, padx=2) abbreviation_operation_button("/").grid(row=2, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("±").grid(row=6, column=0, stick="wens", pady=2, padx=2) abbreviation_operation_button("*").grid(row=3, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("-").grid(row=4, column=3, stick="wens", pady=2, padx=2) abbreviation_operation_button("+").grid(row=5, column=3, stick="wens", pady=2, padx=2) abbreviation_calc_button("=").grid(row=6, column=2, columnspan=2, stick="wens", pady=2, padx=2) root.grid_columnconfigure(0,minsize=65) root.grid_columnconfigure(1,minsize=65) root.grid_columnconfigure(2,minsize=65) root.grid_columnconfigure(3,minsize=65) root.grid_columnconfigure(4,minsize=65) root.grid_rowconfigure(1,minsize=65) root.grid_rowconfigure(2,minsize=65) root.grid_rowconfigure(3,minsize=65) root.grid_rowconfigure(4,minsize=65) root.grid_rowconfigure(5,minsize=65) root.grid_rowconfigure(6,minsize=65) root.mainloop()
calc.delete(0, tk.END)
calc.insert(0, value+operation)
value = value.removesuffix('.0')
calc.insert(0, str(eval(value)).removesuffix('.0'))
calc.insert(0, eval(value))
Здравствуйте.!!!))) Срезы ещё не проходили, помогите пожалуйста, никак не получается.!!!(((кнопка ← бери срез от первого элемента value до предпоследнего (value[:-1])
кнопка ± - умножай на -1
Добавь перед
calc.delete(0, tk.END)
calc.insert(0, value+operation)
Строку
value = value.removesuffix('.0')
А в calculate
calc.insert(0, str(eval(value)).removesuffix('.0'))
вместо
calc.insert(0, eval(value))
Это очистит незначащие нули
кнопка ← бери срез от первого элемента value до предпоследнего (value[:-1])
кнопка ± - умножай на -1
Добавь перед
calc.delete(0, tk.END)
calc.insert(0, value+operation)
Строку
value = value.removesuffix('.0')
А в calculate
calc.insert(0, str(eval(value)).removesuffix('.0'))
вместо
calc.insert(0, eval(value))
Это очистит незначащие нули
import tkinter as tk
from math import *
def add_digit(digit):
value=calc.get()
if value[0]=="0":
value=value[1:]
calc.delete(0,tk.END)
calc.insert(0,value+digit)
def add_operation(operation):
value = calc.get()
if operation == "1/x":
operation = ""
calculate()
value = calc.get()
value = str(1/float(value))
elif operation == "x2":
operation = ""
calculate()
value = calc.get()
value = str(float(value)**2)
elif operation == "√":
operation = ""
calculate()
value = calc.get()
value = str(float(value)**0.5)
elif operation == "←":
operation = ""
calculate()
value = calc.get()
value = str(float(value[:-9]))
elif operation == "±":
operation = ""
calculate()
value = calc.get()
value = str(float(value)*-1)
elif value[-1] in "-+/*":
value = value[:-1]
elif "+" in value or "-" in value or "/" in value or "*" in value:
calculate()
value = calc.get()
value = value.removesuffix(".0")
calc.delete(0, tk.END)
calc.insert(0, value+operation)
def calculate():
value=calc.get()
if value[-1] in "+-/*":
value = value+value[:-1]
calc.delete(0, tk.END)
calc.insert(0, str(eval(value)).removesuffix(".0"))
def clear():
calc.delete(0, tk.END)
calc.insert(0,0)
def abbreviation(digit):
return tk.Button(text=digit, bd=5, command=lambda: add_digit(digit))
def abbreviation_operation_button(operation):
return tk.Button(text=operation, bd=5, command=lambda: add_operation(operation))
def abbreviation_calc_button(operation):
return tk.Button(text=operation, bd=5, command=calculate)
def abbreviation_clear_button(operation):
return tk.Button(text=operation, bd=5, command=clear)
root=tk.Tk()
root["bg"] = ""
root.title("Калькулятор")
root.wm_attributes("-alpha", 1)
root.geometry("260x417")
root.resizable(width=False, height=False)
calc=tk.Entry(root, justify=tk.RIGHT, font=("Times New Roman", 15),width=15)
calc.insert(0,"0")
calc.grid(row=0, column=0, columnspan=4,stick="we", padx=5)
abbreviation("7").grid(row=3, column=0, stick="wens", pady=2, padx=2)
abbreviation("8").grid(row=3, column=1, stick="wens", pady=2, padx=2)
abbreviation("9").grid(row=3, column=2, stick="wens", pady=2, padx=2)
abbreviation("4").grid(row=4, column=0, stick="wens", pady=2, padx=2)
abbreviation("5").grid(row=4, column=1, stick="wens", pady=2, padx=2)
abbreviation("6").grid(row=4, column=2, stick="wens", pady=2, padx=2)
abbreviation("1").grid(row=5, column=0, stick="wens", pady=2, padx=2)
abbreviation("2").grid(row=5, column=1, stick="wens", pady=2, padx=2)
abbreviation("3").grid(row=5, column=2, stick="wens", pady=2, padx=2)
abbreviation("0").grid(row=6, column=1, stick="wens", pady=2, padx=2)
abbreviation_clear_button("C").grid(row=2, column=1, stick="wens", pady=2, padx=2)
abbreviation_operation_button("x2").grid(row=1, column=0, columnspan=2, stick="wens", pady=2, padx=2)
abbreviation_operation_button("1/x").grid(row=1, column=2, columnspan=2, stick="wens", pady=2, padx=2)
abbreviation_operation_button("←").grid(row=2, column=2, stick="wens", pady=2, padx=2)
abbreviation_operation_button("√").grid(row=2, column=0, stick="wens", pady=2, padx=2)
abbreviation_operation_button("/").grid(row=2, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("±").grid(row=6, column=0, stick="wens", pady=2, padx=2)
abbreviation_operation_button("*").grid(row=3, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("-").grid(row=4, column=3, stick="wens", pady=2, padx=2)
abbreviation_operation_button("+").grid(row=5, column=3, stick="wens", pady=2, padx=2)
abbreviation_calc_button("=").grid(row=6, column=2, columnspan=2, stick="wens", pady=2, padx=2)
root.grid_columnconfigure(0,minsize=65)
root.grid_columnconfigure(1,minsize=65)
root.grid_columnconfigure(2,minsize=65)
root.grid_columnconfigure(3,minsize=65)
root.grid_columnconfigure(4,minsize=65)
root.grid_rowconfigure(1,minsize=65)
root.grid_rowconfigure(2,minsize=65)
root.grid_rowconfigure(3,minsize=65)
root.grid_rowconfigure(4,minsize=65)
root.grid_rowconfigure(5,minsize=65)
root.grid_rowconfigure(6,minsize=65)
root.mainloop()
Разобрался.!!!))) Возник такой вопрос, а как в коде прописать дополнительные кнопки: [√] (код=8730), [±] (код=177), [←] (код=8592), [÷] (код=247), чтоб они брали коды с таблицы символов.??))) И чтоб код был рабочий.??)))кнопка ← бери срез от первого элемента value до предпоследнего (value[:-1])
кнопка ± - умножай на -1
Добавь перед
calc.delete(0, tk.END)
calc.insert(0, value+operation)
Строку
value = value.removesuffix('.0')
А в calculate
calc.insert(0, str(eval(value)).removesuffix('.0'))
вместо
calc.insert(0, eval(value))
Это очистит незначащие нули