رفتن به مطلب



iran rules jazbe modir
ADS mahak

Doctor Robot

Programming-Py python Gui

پست های پیشنهاد شده

خواص عناصر

هر عنصر (Widget) دارای مجموعه‌ای از خواص است که نحوه نمایش آن را بر روی صفحه نمایش کامپیوتر و چگونگی پاسخ به رویدادهای کاربر را تعریف می‌کنند. یک سری از ویژگی‌های که در همه عناصر tkinter مشترک است، در جدول زیر نشان داده شده‌اند:

729907769_c.jpg.1b5d9132674331c9d17c77d37599d035.jpg

علاوه بر خواص بالا، بعضی از عناصر در tkinter دارای خواص مخصوص به خود هستند که در درس‌های آینده در مورد آنها توضیح می‌دهیم. هر کدام از عناصر tkinter در اصل یک کلاس هستند و می‌توانید در داخل پرانتز جلوی نام آنها از خواص بالا استفاده کنید:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

مثلاً برای تغییر رنگ پس زمینه و همچنین رنگ متن یک عنصر می‌توانید با صورت زیر عمل کنید:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

کد بالا رنگ پس زمینه عنصر را به زرد و رنگ متن آنها را به قرمز تغییر می‌دهد. می‌توان کد بالا را به صورت زیر هم نوشت:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

یعنی بعد از ایجاد یک شیء از کلاس برخی از خاصیت‌ها را در داخل پرانتز مقداردهی کرد و برخی دیگر را به صورت کلید/مقدار، تنظیم کنید. البته به این نکته توجه کنید که در کد بالا ما یک شیء از کلاس Widget به نام w ایجاد و بعد خاصیت fg آن را مقداردهی کرده ایم. کد بالا را نمی توان به صورت زیر نوشت:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

حال همین خواص و نحوه قرارگیری عنصر بر روی فرم را می‌توان به صورت تلفیقی تنظیم کرد. فرض کنید که می‌خواهید یک عنصر با رنگ پس زمینه زرد ایجاد کرده که در بالای فرم، قرار بگیرد:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

telegram channel   jazbe modir

کنترل کننده رویداد

رویدادها رفتارهایی یا اتفاقاتی هستند که هنگام اجرای برنامه به وقوع می‌پیوندند. کنترل رویداد فرایند نظارت بر وقوع یک رویداد مشخص می‌باشد. پایتون از کنترل کننده رویداد برای اضافه کردن یک قابلیت و پاسخ به کاربر استفاده می‌کنند. بدون کنترل کننده رویداد، فرم‌ها و رابط گرافیکی تا حد زیادی بدون استفاده هستند.

یک برنامه Tkinter بیشتر زمان اجرایش را درون حلقه رویداد (event) سپری می‌کند. برنامه با فراخوانی تابع ()mainloop وارد آن می‌شود و منتظر یک رویداد می‌ماند. رویدادها می‌توانند، فشرده شدن کلیدها یا حرکات ماوس توسط کاربر باشند.

Tkinter روشی را برای برنامه نویسان فراهم کرده است تا رویدادها را مدیریت کنند. با استفاده از این روش می‌توان برای هر کنترل، توابع پایتون را به یک رویداد متصل کرد. برای کنترل رویدادها در پایتون از تابع ()bind به صورت زیر استفاده می‌شود:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

می توان کنترل کننده رویداد یا Event Handling در پایتون را به این صورت توضیح داد که:

تابع ()bind یک تابع را به یک رویداد وصل می‌کند، بدین معنی که اگر مثلاً یک رویداد مثل کلیک کاربر بر روی دکمه ماوس اتفاق افتاد (event)، فلان تابع فراخوانی و اجرا شود (handler).

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

رویدادها

Tkinter برای اینکه به برنامه نویس اجازه بدهد تا مشخص کند چه رویدادهایی به چه توابعی متصل شوند، از روشی به نام دنباله رویدادها استفاده می‌کند. این دنباله ورودی اول تابع ()bind است که به صورت یک رشته با ساختار زیر می‌باشد:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

قسمت type بخش اصلی است. اما بخش‌های modifier و detail ضروری نیستند و در بسیاری از موارد استفاده نمی‌شوند. این دو بخش معمولاً اطلاعات اضافی را برای type فراهم می‌کنند. بخش type، نوع رویدادی که باید به تابع متصل شود را توصیف می‌کند. برای مثال اعمالی شبیه کلیک ماوس، فشردن یک کلید، یا دریافت فوکوس توسط یک کنترل. برای درک کامل، به کد زیر توجه کنید:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در کد بالا و در خطوط 4 و 5 یک پنجره با عرض و ارتفاع 200 پیکسل ایجاد و در خطوط 6 و 7 یک کنترل دکمه بر روی آن قرار داده‌ایم. در خط 7 و در داخل سازنده کلاس Button مشخص کرده‌ایم که دکمه در کجا قرار بگیرد و متن روی آن (text) چه باشد. حال به خطوط 12-9 که موضوع اصلی این درس است می‌پردازیم. در خطوط 10-9 یک تابع تعریف و در خط 12 این تابع را با استفاده از تابع ()bind به دکمه چپ ماوس وصل کرده‌ایم. همانطور که قبلاً اشاره شد، تابع ()bind می‌گوید که کدام تابع هنگام وقوع یک رویداد فراخوانی و اجرا شود. در خط 12 گفته‌ایم که وقتی بر روی یکی از دکمه های ماوس کلیک شد، فلان تابع که در اینجا ()showmessage است فراخوانی و کدهای آن اجرا شوند. حال اگر بخواهیم اگر بر روی مثلا دکمه چپ ماوس کلیک شد، تابع فراخوانی شود، باید خط 12 را به صورت زیر تغییر دهیم:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

و اگر بخواهیم اول دکمه Shift کیبورد گرفته، و سپس با کلیک بر روی دکمه چپ ماوس، تابع فراخوانی شود، خط 12 را باید به صورت زیر بنویسیم:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در کدهای بالا، ‘<Shift-Button-1>’ یک رویداد است و وقتی به وقوع می پیوندد که دکمه چپ ماوس توسط کاربر فشرده شود. در ادامه لیست رویدادهای ماوس و صفحه کلید ذکر شده است:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

شیء event

همانطور که در کدهای ابتدای درس مشاهده می کنید با وقوقع یک رویداد، یک تابع فراخوانی و اجرا می شود. این تابع داری یک آرگومان با نام event می باشد. وجود این کلمه، بدین معناست که این تابع به یک رویداد وصل است. این کلمه در اصل یک شیء است که دارای خواص مفیدی می‌باشد. خواص این شیء بسته به نوع رویداد، متفاوت است. برخی از خواص این شیء برای رویدادهای کیبورد و برخی دیگر برای رویدادهای ماوس کاربرد دارند و اطلاعات مفیدی در اختیار ما می گذارند.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

خواص event

1008438420_c.jpg.e6e3dad8867b9fa490aa31a8aa8fd9f0.jpg

همانطور که در جدول بالا مشاهده می کنید، از خاصیت‌های x و y، می‌توان برای به دست آوردن موقعیت نشانگر ماوس استفاده کرد. به کد زیر توجه کنید:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در خط 11، همانطور که در بحث شیء گرایی گفتیم، خاصیت‌های کلاس event را با استفاده از علامت نقطه فراخوانی می‌کنیم. حال برنامه را اجرا و بر روی قسمت‌های مختلف پنجره کلیک کنید. مشاهده می‌کنید که اعداد مختلفی در خروجی نمایش داده می‌شوند که همان موقعیت X و Y نشانگر ماوس هستند:
1524810166_c.jpg.7362f0409838706f8f69fae2c9cc6c53.jpg

حال اگر در خط 9 کد بالا به جای رویداد ‘<Button-1>’ یک رویداد از کیبورد را به صورت زیر بنویسید:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

و سپس برنامه را اجرا و بر روی قسمت های مختلف پنجره کلیک نمایید، هیچ اتفاق خاصی نمی افتد، چون خاصیت های x و y فقط برای رویدادهای ماوس تعریف شده اند. در عوض اگر خطوط 9-6 کد بالا را به صورت زیر تغییر داده :

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

و برنامه اجرا و سپس بر روی یکی از دکمه های کیبورد کلیک کنید، مشاهده می کنید که اسم آن دکمه در قسمت خروجی برنامه به شما نشان داده می شود:
1815633953_c.jpg.7f0c63fa68387bbbcf6e633b5f7c315a.jpg

چون خاصیت keysym همراه با رویدادهای کیبورد، کاربرد دارد. در این درس با نحوه استفاده از رویدادها آشنا شدید، در درس های آینده توضیحات بیشتری در مورد آنها، ارائه می دهیم.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

پنجره اصلی (Top-Level Window)

پنجره اصلی (Top-Level Window)، همان پنجره‌ای است که بقیه عناصر بر روی آن قرار می‌گیرند. این پنجره معادل همان فرم در ویندوز فرم سی شارپ می‌باشد و برای ایجاد آن از کلاس ()Tk استفاده می‌شود:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

با اجرای برنامه بالا، پنجره اصلی به صورت زیر نمایش داده می‌شود:
891306836_c.jpg.673f715be9af94d6c134440eb0a49d66.jpg

برنامه می‌تواند هر تعداد پنجره Top Level داشته باشد. این عنصر دارای خاصیت‌هایی است که می‌توانند به صورت زوج‌های کلید-مقدار که با ویرگول از هم جدا می‌شوند، مورد استفاده قرار گیرند. لیست خاصیت‌های این عنصر در جدول زیر آمده است:

383437435_c.jpg.8b03c85976643641e0ba4d6e65e08897.jpg

برای استفاده از خاصیت‌های بالا، باید آنها را به صورت کلید/مقدار به تابع ()configure مربوط به شیء پنجره اصلی، ارسال کرد:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

با اجرای برنامه بالا پنجره به صورت زیر تغییر می‌کند:
429873444_c.jpg.bf6cab34aebf6081df209d8f5e10d717.jpg

حال اگر نشانگر ماوس را هم بر روی این پنجره قرار دهید، مشاهده می‌کنید که شکل آن نیز تغییر می‌کند. شیء Top Level دارای توابع زیر می‌باشد:

878009043_c.thumb.jpg.a4e449c090ec63f39edb3138be4795ce.jpg

به کد زیر توجه کنید :

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در کد بالا با دادن مقدار False به تابع ()resizable از تغییر اندازه آن جلوگیری کرده‌ایم. یعنی با ماوس نمی‌توان عرض و ارتفاع آن را تغییر داد. برای تعیین عنوان پنجره هم از تابع ()title به صورت زیر استفاده می‌کنیم:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

با اجرای برنامه، مشاهده می‌کنید که عنوان پنجره به Top Level تغییر می‌کند:
265806222_c.jpg.59bacbcc32ba0196d0dd642148d490ee.jpg

اگر بخواهید که هم اندازه و هم موقعیت پنجره را تغییر دهید، می‌توانید از تابع ()geometry به صورت زیر استفاده کنید:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

عدد 200 در کد بالا نشان دهنده عرض پنجره، 150، طول پنجره، 500، فاصله عمودی از گوشه بالا و سمت چپ مانیتور و 300 فاصله افقی از گوشه بالا و سمت چپ مانیتور، می‌باشد. شکل عمومی استفاده از این تابع به صورت زیر است:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

برای مخفی کردن پنجره هم از تابع ()withdraw استفاده می‌شود:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

messagebox

messagebox برای نمایش کادر پیام در برنامه استفاده می‌شود. این عنصر با فراهم آوردن تعدادی تابع، امکان نمایش پیام مناسب را فراهم می‌آورد. به شکل ساده، نحوه استفاده این عنصر به شکل زیر است:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در کد بالا FunctionName، نام تابع مناسب برای نمایش پیام می‌باشد، که به جای آن باید از یکی از توابع زیر استفاده کرد:

  • ()showinfo
  • ()showwarning
  • ()showerror
  • ()askquestion
  • ()askokcancel
  • ()askyesno
  • ()askretrycancel

توابع بالا پارامترهایی می‌گیرند که در جدول زیر، به آنها اشاره شده است:

989144285_c.jpg.9d4e50b974c5f5e3430ee9fff447f7f6.jpg

موارد گفته شده در مثال زیر خلاصه می‌شود:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در کد بالا ما از توابع مختلف برای نمایش پیام‌های متفاوت استفاده کرده‌ایم (خطوط 15-9). در خط 6 با استفاده از تابع ()withdraw پنجره اصلی برنامه را مخفی نموده‌ایم، چون نیازی به آن نداریم. همانطور که مشاهده می‌کنید، در خط 8، تابع ()showerror باعث ایجاد پیغامی به صورت زیر می‌شود:
161585712_c.jpg.4fe7c880a24e4872b4445908f58bea10.jpg

اولین آرگومان این تابع یعنی رشته error، عنوان پنجره و دومین آرگومان آن هم متن داخل پنجره یعنی Error message را مشخص می‌کند. بسته به نوع تابعی که ما استفاده می‌کنیم، هم تعداد دکمه‌ها و هم نوع آیکون پیغام هم متفاوت است. مثلاً استفاده از تابع ()askyesnocancel در خط 8، باعث ایجاد پیغامی با سه دکمه، NO ،Yes و Cansel می‌شود:
765791020_c.jpg.4c70ef22610347a133f1490d949ddb68.jpg

به آیکون متفاوت این پیغام هم توجه کنید. در شکل بالا، در حالت پیشفرض، دکمه Yes به عنوان دکمه پیشفرض می‌باشد، اگر بخواهید مثلاً دکمه No دکمه پیشفرض باشد باید از آرگومان سوم تابع ()askyesnocancel استفاده کنید که با گرفتن یک ثابت، دکمه پیشفرض را تعیین می‌کند:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

با اجرای برنامه، مشاهده می‌کنید که دکمه No به صورت پیشفرض در می‌آید:

1005990282_c.jpg.95ffd018220beb26086138786e86a803.jpg

منظور از دکمه پیشفرض، دکمه‌ای است که با فشردن دکمه Enter صفحه کلید، آن دکمه عمل کند. کلیک بر روی دکمه‌های مختلف، مقادیر متفاوتی را در اختیار ما می‌گذارد. مثلاً کلیک بر روی دکمه‌های No ،Yes و Cancel یه ترتیب باعث بازگشت مقادیر False ،True و None می‌شود. با استفاده از مقادیر بازگشتی می‌توان فهمید که کاربر بر روی کدام دکمه کلیک کرده، و در نتیجه عملیات متفاوتی را بر هر کلیک در نظر گرفت. خطوط 9-15 کد بالا را به صورت زیر تغییر داده و برنامه را اجرا و با کلیک بر روی دکمه‌های مختلف، نتیجه را مشاهده نمایید:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در کد بالا چون ما دکمه No را به صورت پیشفرض در آورده‌ایم در نتیجه با کلیک بر روی دکمه Enter، پیغام !No button clicked نمایش داده می‌شود.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Button

عنصر Button برای قرار دادن دکمه‌ها در یک برنامه پایتون استفاده می‌شود. دکمه‌ها می‌توانند متن یا عکس را به نمایش بگذارند. شما می‌توانید یک تابع را به یک دکمه متصل کنید، به صورتی که هنگام کلیک کردن دکمه، این تابع به صورت خودکار فراخوانی شود. نحوه تعریف کردن عنصر دکمه به صورت زیر است:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

master، بیانگر پنجره والدی است که این دکمه به آن تعلق خواهد داشت و Options، تنظیمات پرکاربرد برای دکمه می‌باشند که می‌توانند به صورت زوج‌های کلید/مقدار که با ویرگول از هم جدا می‌شوند، مورد استفاده قرار گیرند. در جدول زیر لیست این تنظیمات آمده است:

2144077416_c.jpg.687550601eb5986fdb8b2de91fbca212.jpg

1774762757_c.jpg.250ba0511859b57fc9af54bce071f9af.jpg

توابع پر کاربرد برای این عنصر به شرح زیر است :

1385716214_c.jpg.4e096f5c627b38bed0a2960af50cb726.jpg

می‌خواهیم برنامه‌ای بنویسیم که وقتی نشانگر ماوس بر روی دکمه قرار گرفت یک پیغام و وقتی از آن خارج شد، پیغام دیگر در داخل دکمه نمایش داده شود. به کد زیر توجه کنید:

برای مشاهده این بخش لطفا وارد حساب کابری خود شوید یا اگر عضو نیستید از این قسمت عضو سایت شوید

در باره خطوط 5-1 قبلاً توضیح داده‌ایم. در خط 7 یک دکمه ایجاد کرده و خاصیت‌های آن، از جمله عرض، ارتفاع، متن و ضخامت خط کناری آن را مقداردهی می‌کنیم. در خط 8 نیز با استفاده از تابع ()place مشخص می‌کنیم که دکمه در کجای پنجره اصلی قرار بگیرد. در خطوط 14-10 دو تابع ()enter و ()leave تعریف کرده‌ایم که به ترتیب هنگام وارد شدن نشانگر ماوس به دکمه و خارج شدن از آن فراخوانی و فعال می‌شوند. این دو تابع را با استفاده از تابع ()bind به ترتیب به رویدادهای Enter و Leave متصل می‌کنیم (خطوط 16 و 17).حال برنامه را اجرا کنید. مشاهده می‌کنید که با قرار گرفتن نشانگر ماوس بر روی کنترل button خاصیت text آن تغییر می‌کند. و از طرف دیگر وقتی که نشانگر از کنترل دکمه دور می‌شود این خاصیت دوباره تغییر می‌کند:
887713587_c.jpg.34e2824e439fd50290dacb31e3936cc7.jpg

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   بازگردانی قالب بندی

  حداکثر استفاده از ۷۵ شکلک مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

در حال بارگذاری

  • مطالب مشابه

    • توسط  Doctor Robot
      کاربرد پایتون در شبکه
      میدانیم پایتون زبانی است با قابلیت های بسیار، ازبرنامه نویسی برای وب گرفته تاهوش مصنوعی و....
      امروز میخواهیم قدرت این زبان محبوب را در شبکه بررسی کنیم و بفهمیم چه کاربردی دارد؟
      چگونه میتوان از این زبان در بحث شبکه استفاده کرد؟
      زبان پایتون با استفاده از ماژول خود به نام سوکت در شبکه کار میکند پس قبل از آن ما شما را با تاریخچه این ماژول وهمچنین تعریفی ازآن آشنا میکنیم سپس آموزش پایتون سوکت را به طورمختصر برای  شما بیان میکنیم  پس باماهمراه باشید.
  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...