Path: blob/master/الفصل التسع-واجهة المستخدم GUI.ipynb
675 views
تعتبر واجهة المستخدم من أفضل طرق التفاعل التي يمكن ان يقدمها مطوري البرامج لمستخدمي البرامج. حيث تحتوي واجهة المستخدم على ازرار للضغط عليها وصناديق نصوص لادخال النصوص وقوائم اختيار والكثير الكثير من الأدوات التي تمكن مستخدمي البرامج من التفاعل مع برامجهم وادخال البيانات لها. ويتوفر لمطوري بايثون العديد من المكتبات التي تسهل عمل واجهات مستخدم احترافية والتي من اشهرها:
مكتبة tkinter والتي تأتي مدمجة مع إصدارة بايثون كمكتبة قياسية .
مكتبة PyQt5 وهي مكتبة خارجية ذائعة الصيت متوائمة مع أنطمة التشغيل المشهورة.
مكتبة wxPython وهي ايصاً مكتبة خارجية متوائمة مع أنطمة التشغيل المشهورة.
مكتبة Kivy وهي مكتبة خارجية مفتوحة المصدر متوائمة مع أنطمة التشغيل المشهورة.
أهداف الفصل
عند اتمام هذا الفصل يجب ان يكون لديك المام بالآتي:
- التعرف على بناء واجهة مستخدم بسيطة باستخدام مكتبة tkinter
- التعرف على بناء واجهة مستخدم بسيطة باستخدام مكتبة PyQt5
- التعرف على بناء واجهة مستخدم بسيطة باستخدام مكتبة Kivy
مكتبة tkinter
---------------------------------------------------------------------------
TclError Traceback (most recent call last)
/tmp/ipykernel_3640/42548479.py in <module>
13 win.resizable(0,0)
14 photo = PhotoImage(file = "img/calculator.png")
---> 15 win.iconphoto(False,photo)
16 display=Label(win,text="0.0",height=3,bg='white',width=38,font=12)
17 display.pack(pady=3,anchor="w")
/usr/lib/python3.8/tkinter/__init__.py in wm_iconphoto(self, default, *args)
2125 self.tk.call('wm', 'iconphoto', self._w, "-default", *args)
2126 else:
-> 2127 self.tk.call('wm', 'iconphoto', self._w, *args)
2128
2129 iconphoto = wm_iconphoto
TclError: can't use "pyimage2" as iconphoto: not a photo image
لنقم الآن بإضافة وظائف لأزار الآلة الحاسبة وذلك بكتابة دوال تقوم بمهام ادخال الارقام واجراء العمليات الحسابية عند الضغط على هذه الأزرار.
مكتبة PyQt5
مكتبة Kivy
Collecting kivy
Downloading Kivy-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (31.3 MB)
|████████████████████████████████| 31.3 MB 4.0 MB/s eta 0:00:011 |███████████▎ | 11.1 MB 907 kB/s eta 0:00:23
Collecting Kivy-Garden>=0.1.4
Downloading Kivy_Garden-0.1.5-py3-none-any.whl (4.6 kB)
Requirement already satisfied: pygments in /home/alhakeeeem/.local/lib/python3.8/site-packages (from kivy) (2.9.0)
Requirement already satisfied: docutils in /home/alhakeeeem/.local/lib/python3.8/site-packages (from kivy) (0.19)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from Kivy-Garden>=0.1.4->kivy) (2.22.0)
Installing collected packages: Kivy-Garden, kivy
Successfully installed Kivy-Garden-0.1.5 kivy-2.1.0
Note: you may need to restart the kernel to use updated packages.
[INFO ] [Logger ] Record log in /home/alhakeeeem/.kivy/logs/kivy_23-01-07_2.txt
[INFO ] [Kivy ] v2.1.0
[INFO ] [Kivy ] Installed at "/home/alhakeeeem/.local/lib/python3.8/site-packages/kivy/__init__.py"
[INFO ] [Python ] v3.8.10 (default, Nov 14 2022, 12:59:47)
[GCC 9.4.0]
[INFO ] [Python ] Interpreter at "/usr/bin/python3"
[INFO ] [Logger ] Purge log fired. Processing...
[INFO ] [Logger ] Purge finished!
[INFO ] [Factory ] 189 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] Backend used <sdl2>
[INFO ] [GL ] OpenGL version <b'1.4 (4.6.0 NVIDIA 456.71)'>
[INFO ] [GL ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO ] [GL ] OpenGL renderer <b'GeForce GT 730/PCIe/SSE2'>
[INFO ] [GL ] OpenGL parsed version: 1, 4