ඒකකය 4 – පළමු ව්‍යාපෘතිය: සරල ගණක යන්ත්‍රයක් (Calculator) 🧮

දැන් න්‍යාය (theory) ඇති! අපි 3 වන ඒකකයෙන් ඉගෙනගත් Widgets, Layouts සහ Button Commands යන සියල්ල එකට එකතු කර, අපගේ පළමු සැබෑ මෘදුකාංගය නිර්මාණය කිරීමටයි මේ සූදානම. මෙම ඒකකය අවසානයේ, ඔබට ඔබ විසින්ම නිර්මාණය කළ, සම්පූර්ණයෙන්ම ක්‍රියාත්මක වන Calculator මෘදුකාංගයක් ලැබෙනු ඇත.

පියවර 1: ඉලක්කම් සහ ක්‍රියාකරුවන් සඳහා බොත්තම් නිර්මාණය

Calculator එකක බොත්තම් ඉතා පිළිවෙලට, වගුවක මෙන් සකසා ඇත. එම නිසා, මෙම UI එක නිර්මාණය සඳහා අපට වඩාත්ම ගැලපෙන්නේ grid() layout manager එකයි. අපට අවශ්‍ය පේළිය (row) සහ තීරුව (column) සඳහන් කරමින් බොත්තම් ස්ථානගත කළ හැක.

0 සිට 9 දක්වා බොත්තම් නිර්මාණය කිරීමේදී, එකම කේතය දස වතාවක් ලිවීම වෙනුවට, අපට for loop එකක් භාවිතා කළ හැක. මෙය වඩාත් කාර්යක්ෂම සහ හොඳ ක්‍රමලේඛන පුරුද්දකි.

UI එක පිළිවෙලට තබා ගැනීමට, ඉහළින් පිළිතුර පෙන්වන Entry විජට් එකත්, පහළින් බොත්තම් ටිකත් වෙන වෙනම Frame දෙකක් තුළ තැබීම වඩාත් සුදුසුය.


පියවර 2: බොත්තම් එබීම හැසිරවීම (Button Events)

දැන් අපගේ මෘදුකාංගයට මොළයක් ලබා දීමට කාලයයි. පරිශීලකයා බොත්තමක් click කළ විට කුමක් සිදුවිය යුතුද යන්න අපි තීරණය කළ යුතුය.

  1. ඉලක්කම් සහ ගණිතමය πράξεις පෙන්වීම සඳහා, අපට ඉහළින් Entry විජට් එකක් අවශ්‍ය වේ.
  2. අපි function එකක් නිර්මාණය කර, සියලුම ඉලක්කම් සහ ක්‍රියාකාරක (+, -, *, /) බොත්තම් වල command එකට මෙම function එක සම්බන්ධ කරමු.
  3. මෙම function එක මඟින්, click කරන ලද බොත්තමේ අගය (උදා: '7' හෝ '+') ලබාගෙන, එය Entry විජට් එකේ දැනටමත් ඇති අගය අගට එකතු (append) කළ යුතුය.

පියවර 3: `eval()` භාවිතයෙන් පිළිතුර ගණනය කිරීම

පරිශීලකයා "=" බොත්තම click කළ විට, අප Entry විජට් එකේ ඇති සම්පූර්ණ ගණිතමය ප්‍රකාශනය (උදා: "5*3+2") ගෙන, එහි පිළිතුර ගණනය කළ යුතුය. මේ සඳහා Python අපට ඉතා පහසු, බලවත් ශ්‍රිතයක් ලබා දේ: eval().

eval() ශ්‍රිතයට string එකක් (string of text) ලෙස ගණිතමය ප්‍රකාශනයක් ලබා දුන් විට, එය Python කේතයක් ලෙස ක්‍රියාත්මක කර, පිළිතුර ආපසු ලබා දේ. මෙය අපගේ Calculator එකේ ගණනය කිරීමේ එන්ජිමයි!

⚠️ ආරක්ෂාව පිළිබඳව සැලකිලිමත් වන්න!

eval() යනු ඉතා බලවත් ශ්‍රිතයකි, නමුත් එය අවදානම් සහිත විය හැක. එයට හේතුව, එයට ඕනෑම Python කේතයක් ක්‍රියාත්මක කළ හැකි වීමයි. අපගේ මෙම සරල Calculator එකේදී මෙය ගැටළුවක් නොවේ. නමුත්, පරිශීලකයාට ඕනෑම දෙයක් ටයිප් කිරීමට ඉඩ දෙන මෘදුකාංගයක eval() භාවිතා කිරීමෙන්, අනිෂ්ට කේත (malicious code) ක්‍රියාත්මක වීමට ඉඩ ඇත. එමනිසා, විශ්වාස කළ නොහැකි දත්ත සමඟ eval() කිසිවිටෙක භාවිතා නොකරන්න.


පියවර 4: පිළිතුර පෙන්වීම සහ දෝෂ හැසිරවීම (Error Handling)

පිළිතුර ගණනය කළ පසු, අපි Entry විජට් එකේ තිබූ පැරණි ප්‍රකාශනය මකා දමා, ඒ වෙනුවට ලැබුණු පිළිතුර පෙන්විය යුතුය. නමුත්, පරිශීලකයා "5 / 0" (බින්දුවෙන් බෙදීම) හෝ "5 + * 3" වැනි වැරදි ප්‍රකාශනයක් ඇතුළත් කළහොත් කුමක් සිදුවේද? අපගේ මෘදුකාංගය බිඳ වැටෙනු (crash) ඇත!

මෙය වළක්වා ගැනීමට, අපි try...except block එකක් භාවිතා කරමු. මෙය දෝෂ කළමනාකරණය (Error Handling) ලෙස හැඳින්වේ.

  • try: අපි අපගේ ගණනය කිරීමේ කේතය (eval()) මෙම කොටස තුළ තබමු. Python මෙම කේතය ක්‍රියාත්මක කිරීමට "උත්සාහ" කරනු ඇත.
  • except: try කොටස තුළ යම් දෝෂයක් (error) ඇති වුවහොත්, මෘදුකාංගය නතර නොවී, except කොටස තුළ ඇති කේතය ක්‍රියාත්මක වේ. මෙහිදී අපට Entry විජට් එකේ "Error" වැනි පණිවිඩයක් පෙන්විය හැක.

මෙම පියවර සියල්ල අවසානයේ, ඔබට පහත රූපයේ පරිදි ක්‍රියාත්මක වන Calculator මෘදුකාංගයක් ලැබෙනු ඇත.