Logo for Parsclick

مفاهیم اولیه TK

  محمد محمودی محمد محمودی
  December 25, 2015 at 4:04 PM
  ۴ دی، ۱۳۹۴ ساعت ۱۶:۰۴

این پست مخصوص توسعه دهندگانی است که از قبل با RubyGem کار کرده اند و می دانند که چطور Gem ها را اجرا نصب و راه اندازی کنند. با این حال قول می دهم که نیازی نیست حتما برای درک موضوعات زیر یک متخصص Ruby باشید.

تلنگر: حتما برا شروع یکم Ruby بلد باشید.

خوب شروع کنیم اصلا tk چی هست ؟! tk یه GUI برای app ما می سازه حالا ممکنه براتون سوال پیش بیاد چرا tk , چون سرعت بیشتری نسبت به بقیه کتاب خونه ها داره ( مثلا Qt یا Glade) , دنگ فنگ کمتری داره involvement نسبت به بقیه داره و از همه مهم تر از همه اینه که به صورت دیفالت روی سیستم عامل نصبه ! ( ولی راجبه مک این صدق نمی کنه و باید tk رو نصب کنید ).

بریم برای نصب:

همین طور که گفتم نیاز به نصب نیست پس کافیه که تو Header پروژه تون لود کنید.


require 'tk'

یه فرم ساده:


require 'tk'
root = TkRoot.new { title "Hello,Mamali !" }
root.minsize(600,500)
root.resizable false,false
TkLabel.new(root) do
text 'Hello, World!'
pack { padx 15 ; pady 15; side 'left' }
end
Tk.mainloop

همون طور که می بینید تو خط اول tk رو لود کردیم خوب یه Instance می سازیم تا هر وقت خواستیم بتونیم به فرم دسترسی داشته باشیم

root.minsize: حالا تعین می کنیم که طول و عرض پروژه مون چه قدره ( اگه تعین نکنید باعث میشه فرم به صورت ریز درباید و کاربر مجبور به تغییر اندازه میشه ).

root.resizable: حالا ما به tk میگیم که کاربر اجازه تغیر اندازه پروژه رو نداشته باشه

برای ساخت Label می نونیم از کلاس TKLabel استفاده کنیم همون طور که می بینید ماInstance فرممون رو هم داخله TKLabel گزاشتیم این برای اینه که بفهمیم لیبل برای کدوم فرم ( ممکنه پروژه چند تا فرم داشته باشه البته اگه نزارید ارور می ده :دی )

Pack: برای تعیین مکان شی داخله فرم به کار می ره ( با سه روش میشه این کارو کرد grid، packs، place که تو جلسه بعد تفاوتشونو می گم )

Text: مقدار داخله Label رو تعیین می کنه

خوب کلاس TKLabel چند تا متد GUI داره که می تونیم از اونا استفاده کنیم :


anchor
background
bitmap
borderwidth
cursor
font
foreground
highlightbackground
highlightcolor
highlightthickness
image
justify
padx
pady
relief
takefocus
text
textvariable
underline
wraplength

به نظرم همه ی متد هاش مشخصه ولی تو اموزش های دیگه بازم مثال می زنیم.

در آخر هم باید از TK.mainloop استفاده کنیم تا app مدام در حاله اجرا باشه وگرنه موقع اجرا فرم بسه می شه.

راستی اگه برای مک برنامه می نویسید لازم نیست نگران لود کردن tk تو سیستم های مختلف باشید شما می تونید از Platypus استفاده کنید که اموزش بعدی ما خواهد بود.
برای ارتباط با ما از ایمیل پارس کلیک استفاده کنید mohammad@parsclick.net