شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش پایتون - برنامه نویسی GUI

Python گزینه‌های مختلفی برای توسعه رابط‌های کاربری گرافیکی (GUI) ارائه می‌دهد. مهمترین آنها در زیر ذکر شده است.

  • Tkinter - رابط پایتون به جعبه ابزار Tk GUI است که همراه با پایتون در دسترس است. ما این گزینه را در این آموزش بررسی خواهیم کرد.

  • wxPython − این یک رابط متن باز برای wxWindows است 

  • JPython − یک پورت Python برای Java است که به اسکریپت‌های Python امکان دسترسی یکپارچه به کتابخانه‌های کلاس Java را در دستگاه محلی می‌دهد

رابط‌های مختلف دیگری نیز در اینترنت موجود است که بر حسب نیاز مورد استفاده قرار می گیرد.

برنامه نویسی Tkinter

Tkinter کتابخانه GUI استاندارد برای Python است. Python زمانی که با Tkinter ترکیب می‌شود، یک روش سریع و آسان برای ایجاد برنامه‌های GUI فراهم می‌کند. Tkinter یک رابط شیء گرا قدرتمند به Tk GUI toolkit ارائه می‌دهد.

ایجاد یک برنامه GUI با استفاده از Tkinter ساده است. تمام کاری که باید انجام دهید انجام مراحل زیر است −

  • ماژول tkinter را وارد کنید.

  • پنجره اصلی برنامه GUI را ایجاد کنید.

  • یکی یا چند عنصر واسط کاربری (widget) را به برنامه GUI اضافه کنید.

  • در حلقه رویداد اصلی وارد شوید تا در برابر هر رویداد triggered توسط کاربر اقدام کنید.

مثال

import tkinter
top = tkinter.Tk()
# Code to add widgets will go here...
top.mainloop()

این کد پنجره زیر را ایجاد می‌کند −

TK Window

عناصر واسط کاربری Tkinter

Tkinter کنترل‌های مختلفی را ارائه می‌دهد، مانند دکمه‌ها، برچسب‌ها و جعبه‌های متنی که در یک برنامه GUI استفاده می‌شوند. این کنترل‌ها به‌طور معمول عنصر واسط کاربری (widget) نامیده می‌شوند.

در حال حاضر 15 نوع عنصر واسط کاربری در Tkinter وجود دارد. ما این عنصرهای واسط کاربری را همراه با یک توضیح کوتاه در جدول زیر آورده ایم و در درس‌های آتی بیشتر بررسی خواهیم کرد −

ردیف عملگر و توضیحات
1 دکمه (Button)

این ویجت برای نمایش دکمه‌ها در برنامه شما استفاده می‌شود.

2 کانواس (Canvas)

این ویجت برای رسم اشکال مختلف مانند خطوط، بیضی‌ها، چندضلعی‌ها و مستطیل‌ها در برنامه شما استفاده می‌شود.

3 چک‌باکس (Checkbutton)

این ویجت برای نمایش چند گزینه به صورت چک‌باکس استفاده می‌شود. کاربر می‌تواند همزمان چندین گزینه را انتخاب کند.

4 فیلد ورودی (Entry)

این ویجت برای نمایش یک خط متنی برای دریافت مقادیر از کاربر استفاده می‌شود.

5 فریم (Frame)

این ویجت به عنوان یک ویجت‌کانتینر برای سازماندهی دیگر ویجت‌ها استفاده می‌شود.

6 برچسب (Label)

این ویجت برای ارائه عنوان یک خطی برای ویجت‌های دیگر استفاده می‌شود. همچنین می‌تواند شامل تصاویر هم باشد.

7 لیست‌باکس (Listbox)

این ویجت برای ارائه یک لیست گزینه به کاربر استفاده می‌شود.

8 دکمه منو (Menubutton)

این ویجت برای نمایش منوها در برنامه شما استفاده می‌شود.

9 منو (Menu)

این ویجت برای ارائه دستورات مختلف به کاربر استفاده می‌شود. این دستورات داخل دکمه‌ی منو قرار دارند.

10 پیام (Message)

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

11 دکمه رادیویی (Radiobutton)

این ویجت برای نمایش چند گزینه به صورت دکمه‌های رادیویی استفاده می‌شود. کاربر تنها می‌تواند یک گزینه را در هر لحظه انتخاب کند.

12 اسلایدر (Scale)

این ویجت برای ارائه یک ویجت اسلایدر استفاده می‌شود.

13 نوار اسکرول (Scrollbar)

این ویجت برای افزودن قابلیت اسکرول به ویجت‌های مختلف مانند جعبه‌های لیست استفاده می‌شود.

14 متن (Text)

این ویجت برای نمایش متن به صورت چند خطی استفاده می‌شود.

15 تاپ‌لول (Toplevel)

این ویجت برای ارائه یک پنجره جداگانه به کاربر استفاده می‌شود.

16 جعبه انتخاب (Spinbox)

این ویجت نوعی ورودی است که از ویجت ورودی Tkinter استفاده می‌کند و به کاربر اجازه می‌دهد از بین تعداد ثابتی انتخاب کند.

17 پنجره‌ی تقسیم‌شده (PanedWindow)

پنجره‌ی تقسیم‌شده یک ویجت کانتینر است که می‌تواند هر تعداد پنجره داشته باشد و به صورت افقی یا عمودی ترتیب‌بندی شوند.

18 برچسب‌فریم (LabelFrame)

برچسب‌فریم یک ویجت کانتینر ساده است. اصلی‌ترین هدف آن عمل به عنوان یک جا‌گذار یا کانتینر برای طرح‌های پیچیده پنجره است.

19 tkMessageBox

این ماژول برای نمایش جعبه‌های پیام در برنامه‌های شما استفاده می‌شود.

مدیریت هندسه

تمام ویجت‌های Tkinter به متدهای خاص مدیریت هندسه دسترسی دارند که هدف آن‌ها سازماندهی ویجت‌ها در سراسر ناحیه ویجت والد است. Tkinter کلاس‌های مدیریت هندسه زیر را ارائه می‌دهد: pack، grid و place.

  • متد pack() − این مدیریت هندسه ویجت‌ها را قبل از قرارگیری آن‌ها در ویجت والد در بلوک‌ها سازماندهی می‌کند .

  • متد grid() − این مدیریت هندسه ویجت‌ها را به صورت ساختار مانند جدول در ویجت والد سازماندهی می‌کند.

  • متد place() − این مدیریت هندسه ویجت‌ها را با قرار دادن آن‌ها در موقعیت خاصی در ویجت والد سازماندهی می‌کند.