Quantcast
Channel: Planet Python
Viewing all articles
Browse latest Browse all 22462

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

$
0
0

هناك العديد من الخيارات لبرمجة واجهات المستخدم الرسومية بإستخدام بايثون ولكن من بين أسهل الخيارات هناك 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()

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


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

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

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

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


# الحصول على حجم الشاشة
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()

تغيير الخط

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()


عرض صورة

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()


شريط العنوان 

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()

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

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()

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

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.')


Viewing all articles
Browse latest Browse all 22462

Trending Articles