Skip to content

ImanGholamii/Calculator-GUI-M.pro-01

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 

Repository files navigation

Calculator-GUI-M.pro-01 💻

Welcome to Calculator-GUI-M.pro-01! This project utilizes the powerful Kivy library to create a sleek and user-friendly graphical user interface (GUI) for your calculator needs.

🌟 Features:

Intuitive Design: Built with a clean and intuitive interface for ease of use. Efficient Functionality: Harnessing the capabilities of Kivy library to ensure smooth and efficient performance. Customizable Layout: Utilizing modules such as App, Button, BoxLayout, GridLayout, and Label to create a customizable and visually appealing calculator experience.

🚀 Usage:

Clone this repository to your local machine. Ensure you have Python and Kivy installed. Run the application and start calculating effortlessly!

🤝 Contribution:

Contributions are welcome! Whether it's bug fixes, feature enhancements, or UI improvements, feel free to submit a pull request.

📝 License:

This project is licensed under the MIT License, allowing for both personal and commercial use.

🙏 Acknowledgements:

Special thanks to the developers behind the Kivy library for providing such a versatile tool for GUI development.

Commit type Emoji

Initial commit 🎉 General update ⚡ Reverting changes ⏪ Critical hotfix 🚑 Merging branches 🔀

امیدوارم توضیحات زیر به درک بهترتون از اجزای کد کمک کنه.

اجزای اصلی و مشترک در پروژه‌های Kivy

کتابخانه کیوی (Kivy) یک فریم‌ورک اپن سورس برای ساخت رابط کاربری (UI) و اپلیکیشن‌های مولتی‌تاچ و گرافیکی در پایتون است. این کتابخانه به دلیل انعطاف‌پذیری و امکانات گسترده‌ای که دارد، به خصوص در توسعه اپلیکیشن‌های موبایل و دسکتاپ، بسیار محبوب است. در اینجا به بررسی اجزای اصلی و مشترک استفاده از این کتابخانه می‌پردازیم:

  1. کلاس اپلیکیشن (App Class):

    • هر پروژه کیوی شامل یک کلاس اپلیکیشن است که از App ارث‌بری می‌کند. این کلاس نقطه شروع برنامه شما است و شامل متد build است که ویجت ریشه (root widget) را برمی‌گرداند.
    from kivy.app import App
    
    class MyApp(App):
        def build(self):
            return SomeWidget()
    
    if __name__ == '__main__':
        MyApp().run()
  2. ویجت‌ها (Widgets):

    • ویجت‌ها اجزای اصلی ساخت رابط کاربری در کیوی هستند. کیوی ویجت‌های مختلفی مانند Button, Label, TextInput, BoxLayout, GridLayout و غیره را فراهم می‌کند.
    from kivy.uix.button import Button
    from kivy.uix.label import Label
  3. لی‌اوت‌ها (Layouts):

    • برای مرتب‌سازی و مدیریت ویجت‌ها از لی‌اوت‌ها استفاده می‌شود. لی‌اوت‌های رایج عبارتند از BoxLayout, GridLayout, AnchorLayout و غیره.
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.gridlayout import GridLayout
  4. اتصال رویدادها (Event Binding):

    • در کیوی می‌توان رویدادها را به متدها یا توابع متصل کرد. برای مثال، زمانی که کاربر روی یک دکمه کلیک می‌کند، می‌توان یک تابع خاص را اجرا کرد.
    button.bind(on_press=self.on_button_press)
    
    def on_button_press(self, instance):
        print("Button pressed")
  5. ویجت ریشه (Root Widget):

    • ویجت ریشه به عنوان پایه و اساس رابط کاربری شما عمل می‌کند. در متد build از کلاس اپلیکیشن، این ویجت بازگردانده می‌شود.
    class MyApp(App):
        def build(self):
            root = BoxLayout(orientation='vertical')
            root.add_widget(Button(text='Hello'))
            return root
  6. تنظیمات و پیکربندی (Configuration):

    • کیوی امکان پیکربندی اپلیکیشن را فراهم می‌کند. شما می‌توانید از فایل‌های .kv برای تعریف و تنظیم رابط کاربری به صورت جداگانه از کد پایتون استفاده کنید.

نمونه کد:

در اینجا به بخش‌های مختلف کد اشاره می‌کنیم:

  1. ساخت ویجت ریشه و تنظیم لی‌اوت‌ها:

    • استفاده از BoxLayout برای لی‌اوت اصلی و GridLayout برای دکمه‌های ماشین حساب.
    root_widget = BoxLayout(orientation='vertical')
    button_grid = GridLayout(cols=4, size_hint_y=2)
  2. ایجاد و افزودن دکمه‌ها و لیبل‌ها:

    • دکمه‌ها با استفاده از حلقه for ایجاد و به GridLayout افزوده می‌شوند. همچنین یک Label برای نمایش خروجی تعریف شده است.
    output_label = Label(size_hint_y=0.75, font_size=50)
    for symbol in button_symbols:
        button_grid.add_widget(Button(text=symbol))
  3. اتصال رویدادها به دکمه‌ها:

    • برای هر دکمه، رویداد on_press به یک تابع متصل شده است تا متن دکمه را به لیبل اضافه کند.
    def print_button_text(instance):
        output_label.text += instance.text
    
    for button in button_grid.children[1:]:
        button.bind(on_press=print_button_text)
  4. ارزیابی نتیجه و پاک کردن لیبل:

    • دکمه 'Clear' برای پاک کردن لیبل و دکمه '=' برای ارزیابی عبارت ریاضی نوشته شده است.
    def evaluate_result(instance):
        try:
            output_label.text = str(eval(output_label.text))
        except SyntaxError:
            output_label.text = 'Python Syntax error!'
    
    def clear_label(instance):
        output_label.text = " "
  5. نهایی‌سازی رابط کاربری:

    • افزودن لیبل، گرید دکمه‌ها و دکمه پاک کردن به ویجت ریشه و بازگرداندن آن.
    • نقش add_widget

    متد `add_widget` برای افزودن یک ویجت به لیست فرزندان یک ویجت دیگر استفاده می‌شود. این متد باعث می‌شود که ویجت فرزند در چیدمان ویجت والد ظاهر شود.
    root_widget.add_widget(output_label)
    root_widget.add_widget(button_grid)
    root_widget.add_widget(clear_button)
    return root_widget
  6. استفاده از تابع eval:

    یکی از توابع داخلی پایتون eval است که یک رشته را به عنوان کد پایتون اجرا می‌کند. برای مثال، اگر output_label.text شامل رشته‌ای مانند '2 + 2' باشد، eval(output_label.text) این رشته را به عنوان یک عبارت ریاضی ارزیابی می‌کند و نتیجه آن که 4 است را بازمی‌گرداند. نتیجه ارزیابی به رشته تبدیل شده (str()) و به output_label.text اختصاص داده می‌شود. بنابراین، مقدار جدید لیبل برابر با نتیجه محاسبه خواهد بود.

About

we are useing Kivy library to have GUI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages