آشنایی با tk

  • مدرس: علی بیگدلی
  • تاریخ انتشار: 1402/06/20
  • تعداد بازدید: 615

قبلا متوجه شدیم که چگونه می توان برنامه های متنی را با یک رابط خط فرمان یا CLI نوشت. اکنون ما به طور خلاصه به ایجاد یک برنامه با یک رابط کاربر گرافیکی یا GUI نگاه می کنیم. در این دوره ما از tkinter استفاده خواهیم کرد، یک ماژول در کتابخانه استاندارد Python که به عنوان یک رابط کاربری برای Tk، یک ابزار ابزار ساده عمل می کند. ابزارهای دیگر موجود در دسترس هستند، اما اغلب در سراسر سیستم عاملها متفاوتند. اگر شما اصول اولیه tkinter را بیاموزید، باید سعی کنید از یک ابزار بهتر در آینده استفاده کنید. ما خواهیم دید که چگونه یک GUI ساده ایجاد می کند که ورودی و خروجی کاربر را مدیریت می کند. GUI ها اغلب از یک نوع برنامه نویسی OO (Object Oriented) استفاده می کنند که ما را به رویدادی هدایت می کنیم: برنامه به رویدادها پاسخ می دهد، که در حقیقت اقداماتی است که کاربر می گیرد. بسته Tkinter یک بسته بسیار قدرتمند است. اگر شما Python را نصب کرده اید، ممکن است از IDLE استفاده کنید که IDE یکپارچه است که با Python آورده می شود، این IDE با استفاده از Tkinter نوشته شده است. ما از Python 3.6 استفاده خواهیم کرد، بنابراین اگر شما از Python 2.x استفاده می کنید، به شدت توصیه می شود که به Python 3.x تغییر دهید، مگر اینکه شما تغییرات زبان را می دانید، بنابراین می توانید کد را بدون اشتباه اجرا کنید. فرض میکنم که شما مقدار کمی درباره اصول اولیه پایتون دارید تا به شما در درک آنچه ما انجام میدهیم کمک کنیم. در غیر این صورت لطفا به صفحه دوره ها برگردید و دوره آموزش پایتون را گذرانده و سپس وارد این بخش شوید. ما با ایجاد یک پنجره شروع خواهیم کرد، ما یاد خواهیم گرفت که چگونه ویجت ها را مانند دکمه ها، جعبه های دسته کوچک، و غیره اضافه کنیم، سپس با خواص آنها بازی خواهیم کرد و در نهایت دید کلی را نسبت به ساخت اپلیکیشن های مختلف را فرا خواهیم گرفت.

آیا می توان اپلیکیشن های خوبی با این رابط ایجاد کرد؟

واقعیت این است که بستگی به برنامه ای خواهد داشت که می سازید. اگر صرفا برای شما مهم عملکرد های سریع تر و با گرافیک کم تر هستش، بله این ماژول می تواند سرویس هایی را که تعبیه کرده این برای شما به صورت گرافیکی کنترل و به اجرا در آورد. اما باید توجه داشته باشید که این ماژول ضعف هایی هم دارد که در قسمت های جلو تر به مراتب نشان خواهیم داد.

انواع ویجت های Tkinter

بسیاری از کلاسهای حامل ویجت های مختلفی در tkinter ساخته شده اند وجود دارد - که با تعدادی از آن ها آشنا می شویم:

  • یک Frame یک قاب و یک ویجت ظاهر است که در داخل یک پنجره قرار می گیرد، که می تواند حاشیه و پس زمینه خاص خود را داشته باشد - برای گروه بندی ویجت های مرتبط با هم در یک طرح کاربردی استفاده می شود.
  • Toplevel ویجتی است که به عنوان یک پنجره جداگانه نمایش داده می شود.
  • Canvas یک ویجت برای طراحی گرافیک است. در استفاده پیشرفته، می توان آن را نیز برای ایجاد ویدجت های سفارشی استفاده کرد - زیرا ما می توانیم هر چیزی را که دوست داریم در داخل آن بنویسیم و آن را با قابلیت تعاملی ایجاد کنیم.
  • Text متنی را نمایش می دهد که می تواند قابل ویرایش باشد و می تواند تصاویر را جاسازی کند.
  • Button یا یک دکمه معمولا به طور مستقیم بر روی یک عمل کاربر قرار می گیرد - زمانی که کاربر بر روی یک دکمه کلیک کند، باید اتفاق بیافتد.
  • Label یا برچسب یک ویجت ساده است که یک قطعه کوتاه از متن یا یک تصویر را نمایش می دهد، اما معمولا تعاملی نیست. (قابل کلیک نیست)
  • Message یا یک پیام مشابه یک برچسب است، اما برای قسمتهای طولانی تر متن طراحی شده است که باید بسته بندی شوند.
  • Scroller bar اجازه می دهد تا کاربر از طریق آن محتوایی که بیش از حد بزرگ است را به صورت متنی قابل اسکرول مشاهده نماید.
  • Checkbutton، Radiobutton، Listbox، Entry و Scale انواع ویدجت های ورودی هستند که اجازه می دهد تا کاربر اطلاعات را در برنامه وارد کند.
  • منو و Menubutton برای ایجاد منوهای پایین کش استفاده می شود.

چرا استفاده از tkinter؟

دلیل اینکه این ماژول رو انتخاب کردیم به این خاطر هستش که یک رابط native در نظر گرفته میشود و می توان اپلیکیشنی را که طراحی می کنید بدون کوچکترین تغییر در هر سه سیستم عامل ویندوز ، مکینتاش و لینوکس به راحتی و بدون نصب پکیج خاصی استفاده و به اجرا در آورد.

چقدر می تونه tkinter قدرتمند باشه؟

قدرت این ماژول در بعضی موارد به محدودیت هایی که ممکنه باهاش برخورد کنید محدود میشه و نمی توان خیلی انتظار زیادی را از این ماژول داشت، اما می توان برنامه هایی را خلق کرد که ارزش استفاده و همچنین ارزش نرم افزار شما را به دلیل انعطاف پذیری زیادی که دارد بالا می برد.