برنامه‌نویسی گرافیکی در پایتون با ماژول Tkinter - درس دوم

27 اسفند 1398
tkinter

دوستان عزیز سلام! به ادامه ی بحث آموزش برنامه‌ نویسی گرافیکی در پایتون با ماژول tkinter می پردازیم.

کلاس tk

در جلسه قبل یاد گرفتیم که چگونه بتوانیم از کلاس tk یک شی ایجاد کنیم. برای مثال:

tk=Tk()

حال یک کنترل سطح بالا که پنجره اصلی برنامه ما است، ایجاد می شود.

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

Canvas.
هر آنچه که برای تزئین برنامه نیاز دارید در این کلاس پیدا می شود؛ همانند رسم نقاط، گراف ها و...

Button.
دکمه ای را ایجاد می کند و این دکمه طبق دستوراتی که از ما دریافت می کند، یک عمل خاصی را در فرم انجام می دهد (با کلیک کردن کاربر بر روی دکمه)

Menu.
مثل تمام منوهایی که در اپلیکیشن های مختلف در زندگی روزمره خود می بینیم، یک منو ایجاد می کند و ما می توانیم گزینه هایی به آن اضافه کنیم.

Message.
متن موردنظر را به نمایش می گذارد.

Radiobutton.
چند دکمه ایجاد می کند که فقط یکی از آن ها قابل انتخاب و استفاده است.

Listbox.
مقداری از گزینه ها را نشان می دهد و کاربر یکی را انتخاب می کند.

Label.
یک متن و یا یک عکس را به فرم می چسباند.

Text.
یک متن معمول را به شما نمایش می دهد، با این فرق که می توانید مقداری تغییرات گرافیکی را در نمایش متن به کار گیرید.

یاد گرفتیم که می توانیم با کنترل Label، یک متن یا تصویر را به نمایش در بیاوریم. برای اینجاد کنترل Label کد زیر را تایپ کنیم:

win = Label(fourm,text=values)

کنترل Label

در تعریف کلی که در کد بالا از Label داشتیم text یک صفت برای Label بود. برخی از این صفت ها عبارتند از:

text. متن فرمت بندی شده را نمایش می دهد. در آن می توانید متن را به سبک های مختلفی نشان دهید و ویرایش کنید.

foreground & background. این دو صفت به ترتیب رنگ پس زمینه برای کل Label و رنگ زمینه برای صفت را تنظیم می کنند و بطور خلاصه تحت عنوان fg و bg ذکر می شوند.

font. سبک نوشتاری را برای متن تعیین می کند (در داخل Label). برای مثال:

font=("nazanin",22)

کد بالا فونت را «نازنین» و سایز آن را برابر با 22 قرار می دهد.

اگر بخواهیم یک عکس و یک متن را به نمایش در بیاوریم، باید بصورت زیر عمل کنیم:

from tkinter import *
win = Tk()
win.title("Amir")
win.configure(background="red")
lab = Label(win , text="Amir",fg="black",bg="orange").pack(side= "left")
pho = PhotoImage(file="C:\Users\Amir\Desktop\Python-Logo2.gif")
Labe= Label(win,image=pho).pack(side="right")

win.mainloop()

در خط اول tkinter را وارد و همه کتابخانه های آن را بوسیله * import کردیم.
در خط دوم یک فرم ساختیم و به متغیر win وارد کردیم.
در خط سوم title فرم خود را مشخص کرده ایم.
در خط چهارم رنگ زمینه را مشخص کرده ایم.
در خط پنجم Label را ایجاد کرده ایم. در این Label نکته قابل توجه در pack است که در ادامه آن را بررسی خواهیم کرد.
در خط ششم یک متغیر ایجاد کرده و یک عکس را به آن اختصاص داده ایم (پسوند عکس باید gif باشد).
در خط هفتم یک Label برای نمایش دادن عکس ایجاد کرده ایم.
در خط هشتم فرم win را بصورت استمراری و مداوم فراخوانی کرده ایم.

متد pack

این متد پارامترهایی را دریافت و آن ها را روی Label موردنظر اعمال می کند. برخی از آن پارامترها یا صفات عبارتند از:

side. جهات قرارگیری Label را در فرم مشخص می کند.

in. کنترل را در داخل یک کنترل دیگر به اجرا در می آورد.

fill. مشخص می کند که آیا کل فضایی که توسط فرم در اختیارش قرار گرفت، توسط کنترل پر شود یا خیر. اگر None باشد (پیش فرض) در اندازه واقعی خود ظاهر می شود.

متد place

از اسم این متد مشخص است که با تعیین مکان ارتباط دارد. یعنی ما بوسیله این متد می توانیم برای مثال یک موقعیت مکانی برای قرارگیری یک کنترل در یک فرم را تعیین کنیم. به طور نمونه:

controlname.place(x=x1,y=y1)

کنترل Button

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

برای مثال ما می توانیم در پیاده سازی یک ماشین حساب برای هر یک از عملگرهای خود (+ ,- ,/ ,// ,**,%,*) یک دکمه ی متفاوت بسازیم که کاربر بنا به نیاز خود، آن ها را انتخاب کرده و از آن ها استفاده نماید.

Amir = Button(win ,sefat = value)

در کد بالا ما یک متغیر ایجاد کرده و مقدار آن را با یک Button که در فرم win قرار می گیرد مساوی و در پارامتر بعدی صفات موردنظر را به Button داده ایم.

مثال:

Amir = Button(win ,text = "Hello" ,command=quit)
Amir.pack()

یک دکمه در خط اول ساخته شده و صفت خروج از برنامه را با command در خود گرفته است و در خط دوم ما بوسیله متد pack این Button را به فرم موردنظر وصل کرده ایم.


منبع: سایت Geeks for Geeks

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری برنامه‌ نویسی گرافیکی در پایتون توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما (6 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

طاها
20 مرداد 1402
سلام استاد. ببخشید من یک برنامه ی ماشین حساب ساختم که با زدن دکمه ی جمع رنگ بک گراند و رنگ دکمه تغییر میکنه . اما جا های وارد کننده ی عدد و خود عدد نمیدونم باید چی بزنم که تغییر کنه . میشه راهنمایی کنید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

H.e
02 مهر 1400
سلام، ببخشید. چطوری باید برای Button عکس انتخاب کنیم؟ ینی بجای text یه عکس بزاریم؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

H.e
02 مهر 1400
سلام، ببخشید. چطوری باید برای Button عکس انتخاب کنیم؟ ینی بجای text یه عکس بزاریم؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

M n
10 تیر 1400
سلام استاد. در مورد دستور PhotoImage فایل gift جواب می ده ولی jpg نه. ایراد از من هستش یا در اصل همینجوریه؟ ممنون از راهنماییت.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

M n
11 تیر 1400
دوستان از کتاب خونه GUIZERO که استفاده می کنم می شه فایل با پسوند png و jpg رو الصاق کرد ولی با کتاب خونه tkinter فقط gift بالا میاد. من با tkinter کار می کنم . ممنون می شم راهنمایم کنید.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

Habib
13 اسفند 1398
با سلام ؛ آقای اصلانزاده قره موسی ببخشید در متد pack من اون صفت side را متوجه نشدم ، باید در مقابل این صفت عدد قرار دهیم ؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر اصلان زاده قره موسی
14 اسفند 1398
خیر ، اگر در بخش کنترل Label به مثال توجه کنید ، از متد pack استفاده کرده ایم و پارامتری که به آن داده ایم ، side است ، side مقادیری همچون left , right , top می گیرد ، برای درک بهتر ، نمونه کد را در سیستم خود اجرا کرده و بوسیله تغییر مقادیر side ، آن را بهتر درک کنید . با تشکر .

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

علی قلی زاده
11 اسفند 1398
سلام ، خسته نباشید استاد . فکر کنم این آموزش ادامه داره ، درسته ؟ اگه ادامه داره منتظر ادامه آموزش ها هستم ، ممنون میشم زود تر ارسال کنید . با تشکر .

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

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

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.