Quantcast
Viewing all articles
Browse latest Browse all 23027

بايثون العربي: برمجة واجهات المستخدم الرسومية مع بايثون

هناك العديد من الخيارات لبرمجة واجهات المستخدم الرسومية بإستخدام بايثون ولكن من بين أسهل الخيارات هناك Tk لأنها مكتبة قياسية وهذا يعني أنها تأتي مع بايثون و أصبحت مؤخرا تحتوي على الكثير من widgets و تحسين المظهر القبيح التي كانت تمتاز به .
هذا الدليل موجه إلى المبرمجون المعتادون على بايثون و لكن لا خبرة لهم في التطبيقات الرسومية كما لدي هدفين من وراء هذا الدليل وهما : إثبات ان برمجة الواجهات الرسومية ليست صعبة أو مستحيلة كما يظن أغلب المبرمجون وسنقدم أمثلة عن ذلك اما الهدف الثاني أريد التعريف بهذه المكتبة والتي توفر حاجيات لا تحصى لبرمجة برنامج رسومي عالي الجودة .
سنستخدم بايثون 3 في هذا الدليل حتى نشجع الناس على الإنتقال إلى هذه النسخة المحسنة والمطورة من بايثون كما أنوه إلى مستخدمي الويندوز أن مكتبة Tk تأتي مع بايثون إفتراضيا أما أنظمة لينكس فهناك بعض النسخ بحاجة إلى تثبيت منفصل لذلك إرجع إلى وثائق بايثون الخاص بنظامك
.

أهم widget  و مهامها :

Frame : تستخدم لإحتواء widgets وإضافة الحدود
Label: عرض الصور أو النصوص
Button : أزرار قياسيىة لأستدعاء وظائف عند الضغط عليها
Checkbutton : خانة الاختيار لتبديل قيمة (يمكن أن يكون رد على نقرة)
Radiobutton : أزرار الإختيار القياسية
Entry : نص مدخل في سطر واحد
Text:نص مدخل في سطور متعددة
Combobox : قائمة منسدلة للإختيار
Listbox : قائمة لإختيار سطور متعددة
Scrollbar : أفقي أو عمودي
Sizegrip : إضافة مثلث في الزاوية اليمنى السفلية لتسهيل عملية تحريك وتضغير أو تكبير النافذة
Scale : سلم متحرك للنقر وجره مع الفأر
Notebook : للمحتويات التفاعلية
Canvas : لرسم رسومات مثل الخطوط والدوائر والأقواس، والأشكال البيضاوية، والمستطيلات
Menu : شريط العناوين في أعلى النافذة

 نوافذ الحوار المنبثقة 

askquestion : لطرح أسئلة تكون إجابتها نعم أولا
askyesno : طرح أسئلة نعم أولا
askyesnocancel : طرح أسئلة بنعم أولا أو إلغاء
showinfo : عرض نافذة منبثقة مع نص و أيقونة أخبار
shwowarning : عرض نافذة منبثقة مع نص و أيقونة تحذير
showerror : عرض نافذة منبثقة مع نص و أيقونة خطأ
Filedialog : السماح للمستخدم من إختيار ملف من ملفات النظام

النافذة الرئيسية 

from tkinter import Tk
root = Tk ()
root.mainloop()

Image may be NSFW.
Clik here to view.

إضافة أيقونة و عنوان للنافذة 

# تعيين أيقونة وعنوان النافذة

import sys
from tkinter import Tk, PhotoImage
root = Tk()

root.iconphoto(root, PhotoImage(file=sys.argv[1]))
root.title("Tkinter Test")
root.mainloop()

Image may be NSFW.
Clik here to view.

الحصول على حجم الشاشة

# الحصول على حجم الشاشة
from tkinter import Tk
root = Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
print("Screen width:", screen_width)
print("Screen height:", screen_height)

جعل النافذة نافذة كبيرة

from tkinter import Tk
root = Tk ()
root.attributes('-fullscreen', True )
root.mainloop()

تعيين موقع وحجم النافذة 

from tkinter import Tk
root = Tk()
root.geometry("300x150+50+50")
root.mainloop()

عرض نص على النافذة 

from tkinter import Tk , Label
root = Tk ()
my_text = Label (root, text='Hello, world!')
my_text.pack()
root.mainloop()

Image may be NSFW.
Clik here to view.

تغيير الخط

from tkinter import Tk , Message
root = Tk ()
msg = Message (root, text='Hello, world!')
# Font is a tuple of (font _family , size _in _points , style _modifier _string )
msg.config(font=('times', 48, 'italic bold underline'))
msg.pack()
root.mainloop()

Image may be NSFW.
Clik here to view.

عرض صورة

import sys
from tkinter import Tk , Label , PhotoImage
root = Tk ()
img = PhotoImage (file=sys.argv[1])
my_image = Label (root, image=img)
my_image.pack()
root.mainloop()

Image may be NSFW.
Clik here to view.

شريط العنوان 

from tkinter import Tk, Menu
root = Tk()
main_menu = Menu(root, tearoff=0)
main_menu.add_command(label="Quit", command=root.destroy)
root.config(menu=main_menu)
root.mainloop()

Image may be NSFW.
Clik here to view.

شريط عنوان مع قائمة منسدلة

from tkinter import Tk, Menu
root = Tk()
menu_bar = Menu(root)
file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label="Quit!", command=root.destroy)
file_menu.add_command(label="Exit!", command=root.destroy)
file_menu.add_command(label="End!", command=root.destroy)
# Add the "File" drop down sub-menu in the main menu bar
menu_bar.add_cascade(label="File", menu=file_menu)
root.config(menu=menu_bar)
root.mainloop()

Image may be NSFW.
Clik here to view.

نافذة حوار منبثقة

from tkinter import messagebox
dialog_title = 'Please answer'
dialog_text = 'Do you like bacon?'
answer = messagebox.askquestion(dialog_title, dialog_text)
if answer == 'yes':
print('I like bacon too!')
else: # 'no'
print('You must have clicked the wrong button by accident.')

Image may be NSFW.
Clik here to view.


Viewing all articles
Browse latest Browse all 23027

Trending Articles