حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
همهٔ تمرین‌ها

ماشین حساب گرافیکی

تمرین آسان 7473 visibility link download flag trending_up پربازدید

برنامه گرافیکی بنویسید که داری 2 فیلد برای ورود عدد و 4 دکمه برای جمع و تفریق و ضرب و تقسیم باشد. با انتخاب هر دکمه، محاسبات مربوطه روی 2 عدد وارد شده انجام شود و نتیجه نمایش داده شود.

👨‍💻 1 ساعت قبل کاربر ناشناس این تمرین رو مشاهده کرد

پاسخ‌ها 21

from tkinter import *

# Screen Settings
screen = Tk()
screen.geometry("450x550")
screen.resizable(False, False)
screen.title("Calculator")
screen.configure(bg="black")

# Button Commands
def btn_1():
    text = entry.get()
    entry.insert(INSERT, "1")

def btn_2():
    text = entry.get()
    entry.insert(INSERT, "2")

def btn_3():
    text = entry.get()
    entry.insert(INSERT, "3")

def btn_4():
    text = entry.get()
    entry.insert(INSERT, "4")

def btn_5():
    text = entry.get()
    entry.insert(INSERT, "5")

def btn_6():
    text = entry.get()
    entry.insert(INSERT, "6")

def btn_7():
    text = entry.get()
    entry.insert(INSERT, "7")

def btn_8():
    text = entry.get()
    entry.insert(INSERT, "8")

def btn_9():
    text = entry.get()
    entry.insert(INSERT, "9")

def btn_0():
    text = entry.get()
    entry.insert(INSERT, "0")

def plus():
    text = entry.get()
    entry.insert(INSERT, "+")

def minuse():
    text = entry.get()
    entry.insert(INSERT, "-")

def division():
    text = entry.get()
    entry.insert(INSERT, "/")

def multiplation():
    text = entry.get()
    entry.insert(INSERT, "*")

def equal():
    text = entry.get()
    try:
        answer = eval(f"{text}")
        entry.delete(0, END)
        entry.insert(INSERT, answer)
    except:
        entry.delete(0, END)
        entry.insert(INSERT, "ERROR")

def clear():
    entry.delete(0, END)

# Buttens and Entry
entry = Entry(width=17, font=("Comic Sans Ms", 30), bg="black", fg="white", insertbackground="gray")

# Number Buttons
btn1 = Button(text="1", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_1)
btn2 = Button(text="2", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_2)
btn3 = Button(text="3", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_3)
btn4 = Button(text="4", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_4)
btn5 = Button(text="5", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_5)
btn6 = Button(text="6", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_6)
btn7 = Button(text="7", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_7)
btn8 = Button(text="8", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_8)
btn9 = Button(text="9", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_9)
btn0 = Button(text="0", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=btn_0)

# Oprator Buttons
clear_btn = Button(text="C", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=clear)
equal_btn = Button(text="=", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=equal)
plus_btn = Button(text="+", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=plus)
minuse_btn = Button(text="-", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=minuse)
division_btn = Button(text="÷", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=division)
multiplate_btn = Button(text="×", width=6, height=2, cursor="hand2", bg="black", fg="white", font=("Comic Sans Ms", 20), activebackground="gray", activeforeground="black", command=multiplation)

# Place In Screen
entry.place(x=17.5, y=15)
btn1.place(x=16, y=100)
btn2.place(x=121, y=100)
btn3.place(x=226, y=100)
btn4.place(x=16, y=204)
btn5.place(x=121, y=204)
btn6.place(x=226, y=204)
btn7.place(x=16, y=308)
btn8.place(x=121, y=308)
btn9.place(x=226, y=308)
btn0.place(x=121, y=412)
clear_btn.place(x=16, y=412)
equal_btn.place(x=226, y=412)
plus_btn.place(x=331, y=100)
minuse_btn.place(x=331, y=204)
multiplate_btn.place(x=331, y=308)
division_btn.place(x=331, y=412)

screen.mainloop()
import tkinter as tk

GC=tk.Tk()
GC.title('Graphical Calculator')
GC.geometry('500x500')
FN=0
SN=0
final=0
def SUM():
    FN=0
    FN=entry1.get()
    SN=0
    SN=entry2.get()
    SN=int(SN)
    FN=int(FN)
    final=FN+SN
    fin=tk.Label(text=f'{final}')
    fin.pack()
    fin.place(x=450,width=50) 
    aml=tk.Label(text='+')
    aml.pack()
    aml.place(x=200,width=50)
def MENHA():
    aml=tk.Label(text='-')
    aml.pack()
    aml.place(x=200,width=50)
    FN=entry1.get()
    FN=int(FN)
    SN=entry2.get()
    SN=int(SN)
    final=FN-SN
    fin=tk.Label(text=f'={final}')
    fin.pack()
    fin.place(x=450,width=50)    
def PRODUCT():
    aml=tk.Label(text='x')
    aml.pack()
    aml.place(x=200,width=50)
    FN=entry1.get()
    FN=int(FN)
    SN=entry2.get()
    SN=int(SN)
    final=FN*SN
    fin=tk.Label(text=f'={final}')
    fin.pack()
    fin.place(x=450,width=50)    
def DEVIDE():
    aml=tk.Label(text='/')
    aml.pack()
    aml.place(x=200,width=50)
    FN=entry1.get()
    FN=int(FN)
    SN=entry2.get()
    SN=int(SN)
    final=FN/SN
    fin=tk.Label(text=f'={final}')
    fin.pack()
    fin.place(x=450,width=50)   
entry1=tk.Entry()
entry1.pack()
entry1.place(x=0,y=0,height=20,width=200)
entry2=tk.Entry()
entry2.pack()
entry2.place(x=250,y=0,height=20,width=200)


Sum=tk.Button(command=SUM,text='+',font=("Arial", 50))
Sum.pack()
Sum.place(y=20,x=0,width=250,height=240)
Men=tk.Button(command=MENHA,text='-',font=("Arial", 50))
Men.pack()
Men.place(y=20,x=250,width=250,height=240)
Pro=tk.Button(command=PRODUCT,text='x',font=("Arial", 50))
Pro.pack()
Pro.place(y=270,x=0,height=240,width=250)
Dev=tk.Button(command=DEVIDE,text='/',font=("Arial", 50))
Dev.pack()
Dev.place(x=250,y=270,height=240,width=250)
print(FN)


GC.mainloop()
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/style.css">
    <title>Document</title>
    <style>
        body {
            height: 100vh;
            width: 100%;
            background: rgb(0, 200, 255);
            margin: 0;
        }

        * {
            margin: 0;
        }

        .containenr {
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .containenr .calc {
            width: 450px;
            height: 550px;
            background-color: rgba(255, 255, 255, 0.284);
            border: 2px solid gray;
            border-radius: 60px;
            backdrop-filter: blur(10px);
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 10%;
        }

        .containenr .calc .top {
            height: 20%;
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .containenr .calc .top .result {
            height: 50%;
            width: 80%;
            background-color: gray;
            border-radius: 20px;
            padding-right: 5%;
            font-size: 40px;
            color: white;
            display: flex;
            align-items: center;
            overflow-x: auto;
        }

        .containenr .calc .top .result::-webkit-scrollbar {
            background-color: transparent;
            width: 10px;
        }

        .containenr .calc .top .result::-webkit-scrollbar-thumb {
            background-color: rgb(255, 255, 255);
            border-radius: 10px;
        }

        .containenr .calc .top .result::-webkit-scrollbar-corner {
            background-color: transparent;
        }

        .containenr .calc .buttons {
            height: 70%;
            width: 100%;


        }

        .containenr .calc .buttons .inner {
            height: 100%;
            width: 100%;
            display: flex;
            align-items: center;
        }

        .containenr .calc .buttons .nums {
            width: 60%;
            height: 100%;
            display: flex;
            flex-wrap: wrap;
            align-content: flex-start;
            justify-content: center;
        }

        .containenr .calc .buttons .nums .num {
            width: 80px;
            height: 80px;
            background-color: black;
            border: 1px solid gray;
            color: aliceblue;
            margin: 0;
        }

        .containenr .calc .buttons .right {
            width: 40%;
            height: 100%;
            display: flex;
            flex-wrap: wrap;
            align-content: flex-start;
        }

        .containenr .calc .buttons .right .am {
            width: 80px;
            height: 80px;
            background-color: black;
            border: 1px solid gray;
            color: aliceblue;
        }
    </style>
</head>

<body>
    <section class="containenr">
        <div class="calc">
            <div class="top">
                <div class="result">
                    <p class="res"></p>
                </div>
            </div>

            <div class="buttons">
                <div class="inner">
                    <div class="nums">
                        <button class="num" type="button">0</button>
                        <button class="num" type="button">1</button>
                        <button class="num" type="button">2</button>
                        <button class="num" type="button">3</button>
                        <button class="num" type="button">4</button>
                        <button class="num" type="button">5</button>
                        <button class="num" type="button">6</button>
                        <button class="num" type="button">7</button>
                        <button class="num" type="button">8</button>
                        <button class="num" type="button">9</button>
                    </div>

                    <div class="right">
                        <button class="am" type="button">÷</button>
                        <button class="am" type="button">×</button>
                        <button class="am" type="button">-</button>
                        <button class="am" type="button">+</button>
                        <button class="am" type="button">CA</button>
                        <button class="am" type="button">√</button>
                        <button class="am" type="button">+/-</button>
                        <button class="am" type="button">=</button>
                    </div>
                </div>
            </div>
        </div>
    </section>
    <script>let res = document.querySelector('.res');
let nums = document.querySelector('.nums');
let right = document.querySelector('.right');

nums.addEventListener('click', (e) => {
    let click = e.target.closest('.num');

    res.textContent += click.textContent;
});
console.log(res.textContent)

right.addEventListener('drag', (e) => {
    e.preventDefault();
    return;
})
right.addEventListener('click', e => {
    try{
 e.preventDefault();
    var n = res.textContent.trim().split(' ');
    console.log(n.length);
    let click = e.target.closest('.am');
    if (n.length == 3 && click.innerHTML !== 'CA') {

        if (res.textContent == 'NaN') {
            res.textContent = 'there was a error';
        }
        if (click.innerHTML == '=' || click.textContent == '+/-') {
            if (n[1] == '+') {
                res.textContent = Number(n[0]) + Number(n[2]);
            }
            else if (n[1] == '-') {
                res.textContent = Number(n[0]) - Number(n[2]);
            }
            else if (n[1] == '×') {
                res.textContent = Number(n[0]) * Number(n[2]);
            }
            else if (n[1] == '÷') {
                res.textContent = Number(n[0]) / Number(n[2]);
            }
            else if (n[1] == '√') {
                res.textContent = Math.sqrt(Number(n[0]));
            }
        }
        else {
            if (n[1] == '+') {
                res.textContent = Number(n[0]) + Number(n[2]) + ' ' + click.textContent + ' ';
            }
            else if (n[1] == '-') {
                res.textContent = Number(n[0]) - Number(n[2]) + ' ' + click.textContent + ' ';
            }
            else if (n[1] == '×') {
                res.textContent = Number(n[0]) * Number(n[2]) + ' ' + click.textContent + ' ';
            }
            else if (n[1] == '÷') {
                res.textContent = Number(n[0]) / Number(n[2]) + ' ' + click.textContent + ' ';
            }
            else if (n[1] == '√') {
                res.textContent = Math.sqrt(Number(n[0])) + ' ' + click.textContent + ' ';
            }

        }
    }

    else if (n.length == 2 && click.textContent !== 'CA') {
        if (click.textContent !== '=') {
            let a = res.textContent.replace(n[1], click.textContent);
            res.textContent = a;
        }
        else if (click.textContent == '=') {
            if (n[1] == '√') {
                res.textContent = Math.sqrt(Number(n[0]));
            }
            else {
                return;
            }
        }

    }
    else if (n.length == 1 && click.textContent == '=') {
        return;
    }
    else if (click.textContent == 'CA') {
        if (res.textContent.length == 0) {
            return;
        }
        n = [];
        res.textContent = '';
    }

    else if (click.textContent == '+/-' && click.textContent !== 'CA') {
        if (res.textContent.length == 0) {
            return;
        }
        if (res.textContent.includes('-')) {
            let a = res.textContent.replace('-', '');
            res.textContent = a;
        }
        else {
            res.textContent = `-${res.textContent}`;
        }
    }

    else if (res.textContent.length == 0) {
        return;
    }
    else {
        res.textContent += ' ' + click.textContent + ' ';

    }
    }catch{
        console.log('hello')
    }

})
</script>
</body>

</html>
import customtkinter as ctk
from tkinter import messagebox


app = ctk.CTk()
app.title("CalC")
app.geometry("240x195")


frame = ctk.CTkFrame(app , corner_radius = 0)
frame.pack(fill = "both" , expand = True)


def changecolor(color):
     if color == "روشن":
          ctk.set_appearance_mode("Light")
     elif color == "تیره":
          ctk.set_appearance_mode("Dark")
     elif color == "سیستم":
          ctk.set_appearance_mode("System")
menu_color = ctk.CTkOptionMenu(frame , values = ["سیستم" , "روشن" , "تیره"] , command = changecolor , font = ("B nazanin" , 20))
menu_color.pack(pady = 5)


label = ctk.CTkLabel(frame , text = "عبارت ریاضی را وارد کنید" , font = ("B nazanin" , 20))
label.pack(pady = 2)

i = ctk.CTkEntry(frame)
i.pack(pady = 5)


def h():
    ie = i.get()
    e = eval(ie)
    messagebox.showinfo("mohasebe" , f"{e}")
btn = ctk.CTkButton(frame , text = "عبارت رو حل کن" , font = ("B nazanin" , 18) , command = h)
btn.pack(pady = 1)

def out():
     app.quit()
out = ctk.CTkButton(frame , text = "خروج" , font = ("B nazanin" , 20) , command = out)
out.pack(pady = 5)

app.mainloop()
from customtkinter import *
win=CTk()
win.geometry('200x180')
win.config(background="black")
win.title('calculator')

def plus():
    input_1=float(en_1.get())
    input_2=float(en_2.get())
    result=input_1+input_2
    show_result(result)

def minus():
    input_1=float(en_1.get())
    input_2=float(en_2.get())
    result=input_1-input_2
    show_result(result)

def times():
    input_1=float(en_1.get())
    input_2=float(en_2.get())
    result=input_1*input_2
    show_result(result)

def division():
    input_1=float(en_1.get())
    input_2=float(en_2.get())
    result=input_1/input_2
    show_result(result)

def show_result(value):
    result_label.configure(text=f"result: {value}")

result_label=CTkLabel(master=win,
                      text="result: ",
                      fg_color="white",
                      bg_color='black',
                      corner_radius=30,
                      text_color='black',
                      height=20,
                      width=30)
result_label.place(x=100, y=180, anchor="s")

en_1=CTkEntry(master=win,
            text_color="black",
            bg_color='black',
            fg_color='white',
            height=20,
            width=200,
            corner_radius=30)
en_1.place(x=0, y=4, anchor='nw')

en_2=CTkEntry(master=win,
            text_color="black",
            bg_color='black',
            fg_color='white',
            height=20,
            width=200,
            corner_radius=30)
en_2.place(x=0, y=25, anchor='nw')

btn_1=CTkButton(master=win,
                fg_color="gray",
                bg_color='black',
                corner_radius=30,
                text="+",
                text_color="orange",
                height=20,
                width=30,
                command=plus)
btn_1.place(x=100, y=65, anchor='n')

btn_3=CTkButton(master=win,
                fg_color="gray",
                bg_color='black',
                corner_radius=30,
                text="-",
                text_color="orange",
                height=20,
                width=30,
                command=minus)
btn_3.place(x=100, y=107, anchor='n')

btn_4=CTkButton(master=win,
                fg_color="gray",
                bg_color='black',
                corner_radius=30,
                text="x",
                text_color="orange",
                height=20,
                width=30,
                command=times)
btn_4.place(x=84, y=86, anchor='ne')

btn_5=CTkButton(master=win,
                fg_color="gray",
                bg_color='black',
                corner_radius=30,
                text="÷",
                text_color="orange",
                height=20,
                width=30,
                command=division)
btn_5.place(x=115, y=86, anchor='nw')

win.mainloop()

from tkinter import *
from tkinter import messagebox
def click(number):
entry.insert(END,number)

def clear():
entry.delete(0,END)

def equal():
try:
e = entry.get()
result = eval(e)
entry.delete(0,END)
entry.insert(0,result)
except ZeroDivisionError:
messagebox.showerror("Error","ZeroDivisionError")

except ValueError:
    messagebox.showerror("Error","ValueError")

except NameError:
    messagebox.showerror("Error","NameError")

except SyntaxError:
    messagebox.showerror("Error","SyntaxError")

window = Tk()
window.geometry("375x340")
window.title("Calculator")
window.resizable(False,False)
entry = Entry(window)
frame_entry = PanedWindow(window,height=100)
frame_entry.pack(fill="x")
frame_button = PanedWindow(window,height=100)
frame_button.pack(fill="both",expand=1)
entry = Entry(frame_entry,bd=5)
entry.pack(fill="x")
Button(frame_button,text="7",width=11,height=4,bd=5,command=lambda c=7:click(c)).grid(column=1,row=1)
Button(frame_button,text="8",width=11,height=4,bd=5,command=lambda c=8:click(c)).grid(column=2,row=1)
Button(frame_button,text="9",width=11,height=4,bd=5,command=lambda c=9:click(c)).grid(column=3,row=1)
Button(frame_button,text="+",width=11,height=4,bd=5,command=lambda c="+":click(c)).grid(column=4,row=1)
Button(frame_button,text="4",width=11,height=4,bd=5,command=lambda c=4:click(c)).grid(column=1,row=2)
Button(frame_button,text="5",width=11,height=4,bd=5,command=lambda c=5:click(c)).grid(column=2,row=2)
Button(frame_button,text="6",width=11,height=4,bd=5,command=lambda c=6:click(c)).grid(column=3,row=2)
Button(frame_button,text="-",width=11,height=4,bd=5,command=lambda c="-":click(c)).grid(column=4,row=2)
Button(frame_button,text="1",width=11,height=4,bd=5,command=lambda c=1:click(c)).grid(column=1,row=3)
Button(frame_button,text="2",width=11,height=4,bd=5,command=lambda c=2:click(c)).grid(column=2,row=3)
Button(frame_button,text="3",width=11,height=4,bd=5,command=lambda c=3:click(c)).grid(column=3,row=3)
Button(frame_button,text="",width=11,height=4,bd=5,command=lambda c="":click(c)).grid(column=4,row=3)
Button(frame_button,text="0",width=11,height=4,bd=5,command=lambda c=0:click(c)).grid(column=1,row=4)
Button(frame_button,text="C",width=11,height=4,bd=5,command=clear).grid(column=2,row=4)
Button(frame_button,text="=",width=11,height=4,bd=5,command=equal,bg="red").grid(column=3,row=4)
Button(frame_button,text="/",width=11,height=4,bd=5,command=lambda c="/":click(c)).grid(column=4,row=4)
window.mainloop()

import tkinter
from tkinter import Tk
from tkinter import messagebox

calculate = tkinter.Tk()
calculate.title('bezminabadi calculator')
calculate.geometry('300x250')

def jaam ():
    try:
        entry1 = float(num1.get())
        entry2 = float(num2.get())
        result = entry1 + entry2
        result_variation.set(f"نتیجه: {result}")
    except:
        messagebox.showerror('لطفا عدد معتبر وارد کنین.')


def minus():
    try:
        entry1 = float(num1.get())
        entry2 = float(num2.get())
        result = entry1 - entry2
        result_variation.set(f"نتیجه: {result}")
    except:
        messagebox.showerror('خطا؛ لطفا عدد معتبر وارد کنین.')


def zarb():
    try:
        entry1 = float(num1.get())
        entry2 = float(num2.get())
        result = entry1 * entry2
        result_variation.set(f"نتیجه: {result}")
    except:
        messagebox.showerror('خطا؛ لطفا عدد معتبر وارد کنین.')


def devide():
    try:
        entry1 = float(num1.get())
        entry2 = float(num2.get())
        if entry2 == 0 :
            messagebox.showerror('تقسیم بر 0 مجاز نیس.')
        else:
            result = entry1 / entry2
            result_variation.set(f"نتیجه: {result}")
    except:
        messagebox.showerror('خطا؛ لطفا عدد معتبر وارد کنین.')



label1 = tkinter.Label(calculate, text="عدد اول:")
label2 = tkinter.Label(calculate, text="عدد دوم:")

label1.pack()
label2.pack()

num1 = tkinter.Entry(calculate, width = 30)
num2 = tkinter.Entry(calculate, width = 30)
num1.pack()
num2.pack()

result_variation = tkinter.StringVar()
result_variation.set("نتیجه: ")

result_label = tkinter.Label(calculate, textvariable=result_variation, fg="blue")
result_label.pack()


in1 = tkinter.Button(text = 'جمع' , command = jaam)
in1.pack()

in2 = tkinter.Button(text = 'تفریق' , command = minus)
in2.pack()

in3 = tkinter.Button(text = 'ضرب' , command = zarb)
in3.pack()

in4 = tkinter.Button(text = 'تقسیم' ,command = devide)
in4.pack()


num1.focus()
tkinter.mainloop()

# Graphing calculator
import customtkinter as ctk

ctk.set_appearance_mode("light")
ctk.set_default_color_theme("blue")

window = ctk.CTk()
window.title("Graphic Calculator")
window.geometry("380x500")
window.resizable(False, False)

font_label = ("Segoe UI", 13)
font_entry = ("Segoe UI", 14)

def on_focus_in(event, entry):
    entry.configure(border_color="#e28e4a")

def on_focus_out(event, entry):
    current = ctk.get_appearance_mode()
    if current == "Dark":
        entry.configure(border_color="#555555")
    else:
        entry.configure(border_color="#d0d0d0")

def calculate(operation):
    try:
        num1 = float(entry1.get())
        num2 = float(entry2.get())

        if operation == "+":
            result = num1 + num2
        elif operation == "-":
            result = num1 - num2
        elif operation == "*":
            result = num1 * num2
        elif operation == "/":
            if num2 == 0:
                result_label.configure(text="Error: Division by zero")
                return
            result = num1 / num2

        if result == int(result):
            result_label.configure(text=f"Result: {int(result)}")
        else:
            result_label.configure(text=f"Result: {result}")

    except ValueError:
        result_label.configure(text="Error: Please enter valid numbers")

def reset():
    entry1.delete(0, "end")
    entry2.delete(0, "end")
    result_label.configure(text="Result: —")

def toggle_mode():
    current = ctk.get_appearance_mode()
    if current == "Light":
        ctk.set_appearance_mode("dark")
        mode_btn.configure(text="Light",
                           fg_color="#3498db",
                           hover_color="#f1c40f",
                           text_color="#ffffff")
        entry1.configure(fg_color="#2b2b2b", border_color="#555555", text_color="#ffffff")
        entry2.configure(fg_color="#2b2b2b", border_color="#555555", text_color="#ffffff")
    else:
        ctk.set_appearance_mode("light")
        mode_btn.configure(text="Dark",
                           fg_color="#f1c40f",
                           hover_color="#3498db",
                           text_color="#222222")
        entry1.configure(fg_color="#ffffff", border_color="#d0d0d0", text_color="#222222")
        entry2.configure(fg_color="#ffffff", border_color="#d0d0d0", text_color="#222222")

mode_btn = ctk.CTkButton(window, text="Dark",
                         width=70, height=28,
                         font=("Segoe UI", 12),
                         corner_radius=8,
                         fg_color="#f1c40f",
                         hover_color="#3498db",
                         text_color="#222222",
                         command=toggle_mode)
mode_btn.place(relx=0.97, rely=0.02, anchor="ne")

label1 = ctk.CTkLabel(window, text="First Number", font=font_label)
label1.pack(pady=(45, 6))

entry1 = ctk.CTkEntry(window,
                      width=260,
                      height=40,
                      font=font_entry,
                      corner_radius=12,
                      border_width=2,
                      fg_color="#ffffff",
                      border_color="#d0d0d0",
                      text_color="#222222")
entry1.pack()
entry1.bind("<FocusIn>", lambda e: on_focus_in(e, entry1))
entry1.bind("<FocusOut>", lambda e: on_focus_out(e, entry1))

label2 = ctk.CTkLabel(window, text="Second Number", font=font_label)
label2.pack(pady=(18, 6))

entry2 = ctk.CTkEntry(window,
                      width=260,
                      height=40,
                      font=font_entry,
                      corner_radius=12,
                      border_width=2,
                      fg_color="#ffffff",
                      border_color="#d0d0d0",
                      text_color="#222222")
entry2.pack()
entry2.bind("<FocusIn>", lambda e: on_focus_in(e, entry2))
entry2.bind("<FocusOut>", lambda e: on_focus_out(e, entry2))

result_label = ctk.CTkLabel(window, text="Result: —", font=("Segoe UI", 16))
result_label.pack(pady=(25, 5))

button_frame = ctk.CTkFrame(window, fg_color="transparent")
button_frame.pack(pady=25)

btn_font = ("Segoe UI", 18, "bold")

btn_add = ctk.CTkButton(button_frame, text="+",
                        width=60, height=45,
                        font=btn_font,
                        corner_radius=12,
                        fg_color="#e74c3c",
                        hover_color="#c0392b",
                        command=lambda: calculate("+"))
btn_add.grid(row=0, column=0, padx=8)

btn_sub = ctk.CTkButton(button_frame, text="−",
                        width=60, height=45,
                        font=btn_font,
                        corner_radius=12,
                        fg_color="#e67e22",
                        hover_color="#d35400",
                        command=lambda: calculate("-"))
btn_sub.grid(row=0, column=1, padx=8)

btn_mul = ctk.CTkButton(button_frame, text="×",
                        width=60, height=45,
                        font=btn_font,
                        corner_radius=12,
                        fg_color="#f1c40f",
                        hover_color="#f39c12",
                        text_color="#222222",
                        command=lambda: calculate("*"))
btn_mul.grid(row=0, column=2, padx=8)

btn_div = ctk.CTkButton(button_frame, text="÷",
                        width=60, height=45,
                        font=btn_font,
                        corner_radius=12,
                        fg_color="#9b59b6",
                        hover_color="#8e44ad",
                        command=lambda: calculate("/"))
btn_div.grid(row=0, column=3, padx=8)

btn_reset = ctk.CTkButton(window, text="Reset",
                          width=140, height=40,
                          font=("Segoe UI", 14),
                          corner_radius=12,
                          fg_color="#7f8c8d",
                          hover_color="#636e72",
                          command=reset)
btn_reset.pack(pady=10)

window.mainloop()
import tkinter as tk
from tkinter import messagebox

def add():
    try:
        num1 = float(entry1.get())
        num2 = float(entry2.get())
        result = num1 + num2
        label_result.config(text=f"نتیجه: {result}")
    except ValueError:
        messagebox.showerror("خطا", "لطفاً اعداد صحیح وارد کنید.")

def subtract():
    try:
        num1 = float(entry1.get())
        num2 = float(entry2.get())
        result = num1 - num2
        label_result.config(text=f"نتیجه: {result}")
    except ValueError:
        messagebox.showerror("خطا", "لطفاً اعداد صحیح وارد کنید.")

def multiply():
    try:
        num1 = float(entry1.get())
        num2 = float(entry2.get())
        result = num1 * num2
        label_result.config(text=f"نتیجه: {result}")
    except ValueError:
        messagebox.showerror("خطا", "لطفاً اعداد صحیح وارد کنید.")

def divide():
    try:
        num1 = float(entry1.get())
        num2 = float(entry2.get())
        if num2 == 0:
            raise ZeroDivisionError
        result = num1 / num2
        label_result.config(text=f"نتیجه: {result}")
    except ValueError:
        messagebox.showerror("خطا", "لطفاً اعداد صحیح وارد کنید.")
    except ZeroDivisionError:
        messagebox.showerror("خطا", "تقسیم بر صفر امکان‌پذیر نیست.")

# ایجاد پنجره اصلی
root = tk.Tk()
root.title("ماشین حساب ساده")

# ایجاد فیلدهای ورودی
entry1 = tk.Entry(root)
entry1.pack(pady=10)

entry2 = tk.Entry(root)
entry2.pack(pady=10)

# ایجاد دکمه‌ها
btn_add = tk.Button(root, text="جمع", command=add)
btn_add.pack(pady=5)

btn_subtract = tk.Button(root, text="تفریق", command=subtract)
btn_subtract.pack(pady=5)

btn_multiply = tk.Button(root, text="ضرب", command=multiply)
btn_multiply.pack(pady=5)

btn_divide = tk.Button(root, text="تقسیم", command=divide)
btn_divide.pack(pady=5)

# برچسب برای نمایش نتیجه
label_result = tk.Label(root, text="نتیجه: ")
label_result.pack(pady=20)

# اجرای حلقه اصلی
root.mainloop()

ارسال جواب

جوابت را با Markdown بنویس و ثبت کن

×
بستن