Friday, April 6, 2012

wxGlade ഉപയോഗിച്ച് രണ്ട് സംഖ്യകള്‍ കൂട്ടുന്ന വിധം


wxGlade.കോഡ‍് ജനറേറ്റര്‍ ഉപയോഗിച്ച് പൈത്തണ്‍ പ്രോഗ്രാം ചെയ്യുന്ന വിധം
പ്രോഗ്രാമിങ്ങ് ഭാഷ എല്ലാവര്‍ക്കും വഴങ്ങാത്തിതിന് കാരണം അതിന്റെ കോഡുകളും പദവിന്യാസവും കൃത്യമായി അറിഞ്ഞിരിക്കണം എന്നതുകൊണ്ടാണ്.എന്നാല്‍ ഇത് രണ്ടും കൃത്യമായി അറിയാത്തവര്‍ക്ക് അവര്‍ സ്ക്രീനില്‍ എല്തു കാണുന്നുവോ അതിന്റെ എല്ലാം കോഡുകള്‍ തനിയെ എഴുതുന്ന സോഫ്റ്റ് വെയറുകളുടെ സഹായം തേടാം. ഇത്തരത്തിലുള്ള സോഫ്റ്റുവെയറുകളെയാണ് കോഡ് ജനറേറ്ററുകള്‍ എന്ന് പറയുന്നത്. പൈത്തണ്‍ C++ തുടങ്ങിയ ഭാഷകളില്‍ പ്രോഗ്രാമുകള്‍ പ്രോഗ്രാമുകള്‍ തയ്യാറാക്കാന്‍ കഴിവുള്ള ഒരു കോഡ് ജനറേറ്ററാണ് wxGlade.
കോഡ് ജനറേറ്ററുകള്‍ നമ്മള്‍ സ്ക്രീനില്‍ കാണുന്നവയുടെ കോഡുകള്‍ എഴുതുമെങ്കിലും സ്ക്രീനില്‍ കാണുന്ന ഗണിതക്രിയകളടെ കോഡുകള്‍ തനിയെ എഴുതുകയില്ല. അതിനാല്‍ ഗണിതക്രിയകള്‍ അവയുടെ ഉത്തരങ്ങള്‍ പ്രദര്‍ശിപ്പിക്കല്‍ തുടങ്ങിയവക്ക് നമ്മള്‍ തനിയെ ആവശ്യമായ ഭേദഗതികള്‍ വരുത്തേണ്ടതുണ്ട്
നമ്മള്‍ ഇവിടെ തയ്യാറാക്കാന്‍ പോകുന്നത് രണ്ടു സംഖ്യകളുടെ തുക കണ്ടതിന്ശേഷം അത് പ്രദര്‍ശിപ്പിക്കുന്നതിനുള്ള പ്രോഗ്രാമാണ് . ഇത് ടഒരു കാല്‍കുലേറ്ററില്‍ എന്നപോലെ തുക കാണണമെങ്കില്‍ അദ്യം ചിത്രത്തില്‍ കാണുന്ന രീതിയിലലുള്ള ഒരു ഫ്രയിമിന്റെ കോഡ് എഴുതണം



എന്നാല്‍ ഇത്തരത്തിലുള്ള ഒരു ഫ്രയിമിന്റെ കോഡ് വളരെ സങ്കീര്‍ണ്ണമാണ് .അതിനാല്‍ ഇതിന്റെ കോഡ് തയ്യാറാക്കാന്‍ wxGlade ന്റ സഹായം തേടാം.
Application >Programming > wxGlade എന്നരീതിയില്‍ wxGlade തുറക്കുക. അപ്പോള്‍ മൂന്ന് വിന്‍ഡോകള്‍ തുറന്ന് വരുന്നു അവ Tool കളുള്ള wxGlade, wxGladeTree, Properties എന്നിവയാണ്.ഇതില്‍ നിന്നും റ്റൂളുകളുള്ള wxGlade ജാലകത്തിലെ Add Frame എന്ന റ്റൂള്‍ ക്ലിക്ക് ചെയ്യുക


ഇപ്പോള്‍ തുറന്ന് വരുന്ന select frame class എന്ന ജാലകത്തില്‍ wxframe എന്നത് സെലക്ട് ചെയ്ത് OK ക്ലിക്ക് ചെയ്യുക



ഇപ്പോള്‍ Design Frame എന്ന പേരില്‍ പുതിയൊരു ജാലകം പ്രത്യക്ഷപ്പെടുന്നതു കാണാം .wxGlade Tree ജാലകത്തില്‍ sizer_1 എന്നപേരില്‍ ഒരു ഭാഗം പ്രത്യക്ഷപ്പെടുന്നത് കാണാം
sizer ല്‍ ക്ലിക്ക് ചെയ്യുമ്പോള്‍താഴെയുള്ള Properties ജാലകത്തില്‍ കോമണ്‍ എന്ന ടാബിന് കീഴില്‍ ക്ലാസ്സ് എന്ന ഭാഗത്തിന് വലതുവശത്തായി കാണുന്ന ചതുരത്തില്‍ ക്ലിക്ക് ചെയ്യുമ്പോള്‍ പ്രത്യക്ഷപ്പെടുന്ന ജാലകത്തിലെ അവസാനാത്തെ ഓപ്ഷനായ wxFlexgridSizer തിരഞ്ഞെടുത്ത് OK ക്ലിക്ക് ചെയ്യുക




ഇപ്പോള്‍ ഡിസൈന്‍ ജാലകത്തില്‍ ഒരു ചതുരം പ്രത്യക്ഷപ്പെടുന്നത് കാണാം. അടുത്തതായി wxGlade Tree ജാലകത്തില്‍ sizer ല്‍ റൈറ്റ് ക്ലിക്ക് ചെയ്ത് add row എന്നതില്‍ ക്ലിക്ക് ചെയ്യുക.അപ്പോള്‍ അടുത്ത ചതുരം ഡിസൈന്‍ ജാലകത്തില്‍ പ്രത്യക്ഷപ്പെടും ഇങ്ങനെ അടുത്ത റോ കൂടി ചേര്‍ക്കുക പിന്നീട് ഒരു കോളം കൂടി ചേര്‍ക്കുമ്പോള്‍ നമുക്കാവശ്യമായ രീതിയിലുള്ള മൂന്ന് റോയും മൂന്ന് കോളം ഉള്ള ടേബിള്‍ ലഭിക്കുന്നു.

Tools ല്‍ നിന്ന് Add a statictextഎന്നത് തിരഞ്ഞെടുത്തിനുശേഷം ഡിസൈന്‍ ജാലകത്തിലെ ടേബിളിലെ ഒന്നാമത്തെ റോയില്‍ ക്ലിക്ക് ചെയ്യുക . താഴെയുള്ള പ്രോപ്പര്‍ട്ടീസ് ജാലകത്തില്‍ widget എന്ന ടാബിന് കീഴിലുള്ള Title ല്‍ frame _1 എന്നതിനു പകരം Numer 1എന്ന് ടൈപ്പ് ചെയ്യുക .ഡിസൈന്‍ ജാലകത്തില്‍ ഒന്നാമത്തെ സെല്ലില്‍ Label_1 ന് പകരമായി Number 1 എന്ന് വന്നത് കാണാം എന്നു ഇതേ ക്രമത്തില്‍ തൊട്ടു താഴെയുള്ള സെല്ലില്‍ Number 2 എന്ന് വരുത്തുക

Tools ലെ Add Textctrl എന്ന ടൂള്‍ തിരഞ്ഞെടുത്ത് ഡിസൈന്‍ ജാലകത്തിലെ രണ്ടാമത്തെ കോളത്തിലെ ഒന്നാമത്തെ സെല്ലില്‍ ക്ലിക്ക് ചെയ്യുക. ഇതേ ക്രമത്തില്‍ രണ്ടാമത്തെ കോളത്തിലെ രണ്ടാം സെല്ലിലും ക്ലിക്ക് ചെയ്യുക



ഡിസൈന്‍ ജാലകത്തില്‍ അവശേഷിക്കുന്ന രണ്ട് കോളത്തിലും ഓരോ ബട്ടണ്‍ ഉള്‍പ്പെടുത്തുക. അതിനായി ടൂള്‍സിലെAdd a Button തിരഞ്ഞെടുത്ത് വേണ്ട സെല്ലില്‍ ക്ലിക്ക് ചെയ്യുക.

ഒന്നാമത്തെ ബട്ടണില്‍ ക്ലിക്ക് ചെയ്തതിനു ശേഷം Properties ജാലകത്തിലെ widget ല്‍ ലേബലില്‍ button_1 എന്നത് മാറ്റി Add എന്നാക്കുക. Events എന്ന ടാബില്‍ Handler എന്ന ഭാഗത്ത് Sum എന്ന് ടൈപ്പ് ചെയ്യുക.രണ്ടാമത്തെ ബട്ടണിന്റെ Properties ലെ widget ല്‍ ഉള്ള ലേബല്‍ മായ്ച്ചുകളയുക .കാരണം ഇവിടെയാണ് നമ്മുടെ ഉത്തരം പ്രദര്‍ശിപ്പിക്കുന്നത്

sum എന്ന് ടൈപ്പ് ചെയ്തത് കൊണ്ട് മാത്രം ആ ബട്ടണില്‍ ക്ലിക്ക് ചെയ്യുമ്പേള്‍ സംഖ്യകള്‍ കൂട്ടണമെന്നില്ല. Sum എന്നത് ആബട്ടണില്‍ ഉള്‍കൊള്ളിച്ചിരിക്കുന്ന ഫങ്ഷന്റെ പേര് മാത്രമാണ്. sum ന് പകരം നമുക്ക് ഏത് വാക്ക് വേണമെങ്കിലും അവിടെ കൊടുക്കാം. കോഡ് ജനറേറ്റ് ചെയ്തതിനു ശേഷം അവിടെ കൊടുക്കുന്ന വാക്കില്‍ ഉള്ള ഫങ്ഷന്‍ നമ്മള്‍ ഡിഫൈന്‍ ചെയ്ത് കൊടുക്കണമെന്നുമാത്രം.
നമുക്കാവശ്യമായ രീതിയില്‍ ഉള്ള ഫോം തയ്യാറായിക്കഴിഞ്ഞു. ഇനി ഇതിന്റെ കോഡ് ജനറേറ്റ് ചെയ്യാം wxGlade ജാലകത്തിലെ Application നില്‍ ക്ലിക്ക് ചെയ്യുമ്പോള്‍ ഉണ്ടാകുന്ന Properties ജാലകത്തില്‍ Application Tab ന് കീഴില്‍ Language എന്ന ഭാഗത്ത് പൈത്തണ്‍ എന്നത് സെലക്ട് ചെയ്തിട്ടുണ്ടോ എന്ന് പരിശോധിക്കുക. Output Path എന്നതിന് വലതു വശത്തായികാണുന്ന Browse ചെയ്യാനുള്ള ചതുരത്തില്‍ ക്ലിക്ക് ചെയ്തതിനുശേഷം .py എന്ന എക്സറ്റന്‍ഷനോട് കൂടിയ ഫയല്‍ നാമം നല്‍കി(Eg:sum.py) ആവശ്യമുള്ള സ്ഥലത്ത് സേവ് ചെയ്യുക. Properties Window യില്‍ Generate Code എന്നതില്‍ ക്ലിക്ക് ചെയ്യുന്നതോടെ ഫോമിന്റെ കോഡ് നമ്മള്‍ സേവ് ചെയ്ത സ്ഥലത്ത് ഉണ്ടായിടുണ്ടാവും

ഇനി ഫോം സേവ് ചെയ്യണമെങ്കില്‍ wxGlade Window യില്‍ File > Save എന്ന രീതിയില്‍ സേവ് ചെയ്യുക.
അടുത്തതായി നമ്മള്‍ ജനറേറ്റ് ചെയ്ത കോഡില്‍ ഗണിത ക്രിയകള്‍ ചേര്‍ക്കുന്ന പ്രവര്‍ത്തനമാണ്.ഇതിനായി sum.py എന്ന പേരില്‍ സേവ് ചെയ്തിരിക്കുന്ന ഫയലില്‍ ഡബിള്‍ക്ലിക്ക് ചെയ്യുക. അപ്പോള്‍ വരുന്ന ജാലകത്തില്‍ നിന്നും Display എന്ന ടാബില്‍ ക്ലിക്ക് ചെയ്യുക . നമ്മള്‍ Button_1 ല്‍ sum എന്ന് ഫങ്ഷന്റ പേര് മാത്രമെ നല്‍കിയിരുന്നുള്ളൂ ഇനി നമ്മള്‍ ആ ഫങ്ഷന്‍ ഡിഫൈന്‍ ചെയ്യണം അതുപോലെ Button_2 ല്‍ ഉത്തരം കാണിക്കുന്നതിനുള്ള കോഡും എഴുതണം. ഇതിനായി def Sum(self,event) എന്നതിന് ശേഷമുള്ള print "Event handler `sum' not implemented!" എന്നത് മായ്ച്ച് കളയുക അവിടെ C എന്ന ചരത്തില്‍ ഒന്നും രണ്ടും ടെക്സ്റ്റ് ബോക്സ്ലിലെ വിലകള്‍ തമ്മില്‍ കൂട്ടണം

ഇവിടെ text box ലെ വിലകള്‍ ഇന്റജിര്‍(സംഖ്യ) ആണെന്നും വിലയുടെ അവസാനം .Value എന്നും ചേര്‍ക്കണം. .Value എന്നതിന്റെ V ക്യാപിറ്റല്‍ ആണെങ്കില്‍ മാത്രമെ ഇത് വര്‍ക്ക് ചെയ്യൂ താഴെ കൊടുത്തിരിക്കുന്നത് ശ്രദ്ധിക്കുക
അടുത്തതായി c യുടെ വില button 2 ല്‍ പ്രദര്‍ശിപ്പിക്കണം. ഇതിനായി അടുത്ത വരിയില്‍ self.button_2.SetLabel(str(c)) എന്ന് ചേര്‍ക്കണം.

ഇവിടെ എറ്റവും ശ്രദ്ധിക്കേണ്ട ഒന്ന് രണ്ട് കാര്യങ്ങള്‍ ഉണ്ട്. നമ്മള്‍ എഴുതുന്ന പുതിയ വരി മുകളിലത്തെ വരിയുടെ കൃത്യം താഴെ നിന്നാണ് തുടങ്ങേണ്ടത്. SetLabel എന്നതിന്റെ S ഉം L ഉം വലിയക്ഷരങ്ങള്‍ ആയിരിക്കണം.
സാധാരണ ബട്ടണ്‍ ലേബല്‍ ആയി സ്ട്രിങ്ങുകള്‍ മാത്രമെ പ്രദര്‍ശിപ്പിക്കുകയുള്ളൂ . എന്നാല്‍ C എന്ന ചരത്തില്‍ നമ്മള്‍ കൂട്ടാന്‍ പറഞ്ഞിരിക്കുന്നത് രണ്ട് ഇന്റജിറുകള്‍ ആണ് അതിനാല്‍ C യിലെ വിലയും ഇന്റജിര്‍ ആയിരിക്കും. ഇതിനെ ബട്ടണ്‍ ലേബല്‍ ആയി പ്രദര്‍ശിപ്പിക്കുന്നതിന് ഇതിനെ സ്ട്രിങ്ങാക്കി മാറ്റണം അതിനായി C ക്ക് മുമ്പ് str എന്ന് ചേര്‍ത്തിരിക്കുന്നത് ശ്രദ്ധിക്കുക.

ആവശ്യമായ എല്ലാ മാറ്റ ങ്ങളും വരുത്തികഴിഞ്ഞാല്‍ സേവ് ചെയ്യുക ഫയല്‍ ക്ലോസ് ചെയ്ത് വീണ്ടും ഡബിള്‍ ക്ലിക്ക് ചെയ്ത് റണ്‍ ഇന്‍ ടെര്‍മിനല്‍ കൊടുക്കുക.