در این بخش قرار است کلاس لایه ی کنترلگر ماشین حساب را کدنویسی کنیم. این کلاس لایه ی نمایشی را به لایه ی مدل متصل خواهد کرد. از کلاس کنترلگر برای انجام عملیاتی در راستای پاسخگویی به رویدادهای کاربر استفاده خواهد شد. با دستور import زیر کار را آغاز می کنید:
from functools import partial
در بالای فایل pycalc.py، با استفاده از دستور بالا ()partial را برای برقراری اتصال بین سیگنال ها و متدهایی که نیاز به گرفتن ارگومان های اضافی دارند، وارد برنامه می کنید.
کلاس کنترلگرتان باید سه کار اصلی زیر را انجام دهد:
با این سه عمل مطمئن خواهید بود که ماشین حساب به درستی کار خواهد کرد. در زیر نحوه ی کدنویسی این کلاس آمده است:
# Create a Controller class to connect the GUI and the model class PyCalcCtrl: """PyCalc Controller class.""" def __init__(self, view): """Controller initializer.""" self._view = view # Connect signals and slots self._connectSignals() def _buildExpression(self, sub_exp): """Build expression.""" expression = self._view.displayText() + sub_exp self._view.setDisplayText(expression) def _connectSignals(self): """Connect signals and slots.""" for btnText, btn in self._view.buttons.items(): if btnText not in {'=', 'C'}: btn.clicked.connect(partial(self._buildExpression, btnText)) self._view.buttons['C'].clicked.connect(self._view.clearDisplay)
اولین کاری که انجام می دهید، دادن یک نمونه از کلاس PyCalcUi لایه ی نمایش به PyCalcCtrl
می باشد. از این نمونه برای کسب دسترسی به رابط عمومی لایه ی نمایش استفاده خواهید کرد. سپس ()buildExpression_. را برای رسیدگی به ایجاد عبارات ریاضی می سازید. این متد همچنین با پاسخگویی به ورودی کاربر، صفحه ی خروجی ماشین حساب را بروز رسانی می کند.
در نهایت از ()connectSignals_. برای متصل کردن دکمه های قابل چاپ (printable buttons) به ()buildExpression_. استفاده می کنید. این عمل امکان ایجاد عبارات ریاضی با کلیک روی دکمه ها را به کاربر می دهد. در خط آخر نیز دکمه ی پاکسازی (C
) را به ()view.clearDisplay_. متصل می کنید. این متد، متن موجود در صفحه ی خروجی ماشین حساب را پاکسازی می کند.
برای این که کلاس کنترلگر ساخته شده کار کند، باید تغییراتی را در ()main ایجاد کنید:
# Client code def main(): """Main function.""" # Create an instance of QApplication pycalc = QApplication(sys.argv) # Show the calculator's GUI view = PyCalcUi() view.show() # Create instances of the model and the controller PyCalcCtrl(view=view) # Execute calculator's main loop sys.exit(pycalc.exec_())
این کد یک نمونه از (PyCalcCtrl(view=view
با view به عنوان آرگومان آن، ایجاد می کند. این موجب اجرای عمل مقداردهی اولیه و اتصال سیگنال ها و اسلات ها به یکدیگر برای عملکرد ماشین حساب می شود.
اگر این برنامه را اجرا کنید، با پنجره ی زیر مواجه خواهید شد:
همانطور که ملاحظه می کنید ماشین حساب حالا عملکرد دارد! حال می توانید عبارات ریاضی را با کلیک روی دکمه ها در روی صفحه ایجاد کنید. توجه داشته باشید که فعلا دکمه ی مساوی کار نمی کند. برای تصحیح آن نیاز به پیاده سازی لایه ی مدل داریم.
منبع: سایت Real Python
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.