مدونتى حيث اشارك اهتماماتي البرمجية و الفلاحية و الثقافية

السماد المركب NPK 20-20-20


هو سماد مركب قابل للذوبان في الماء الشيء الذي يسهل تطبيقه على الأوراق فهو من الأسمدة المتوازنة، و المناسبة في كل المراحل العمرية.

فهذا السماد يوفر الاحتياجات الغذائية للنبتة بسرعة وكفاءة، ويمكن استخدامه اما على الاوراق أو تطبيقه بتقنية الري، لكن يبقى أكثر ملاءمة للتطبيق على الاوراق. اما النسب كمية السماد التي يجب اساعمالها فلها علاقة بالمرحلة العمرية للنبتة و كذا حالة التربة.

المواصفات:

ينتج هذا المنتج من قبل عدد قليل من شركات الأسمدة المختلفة، ولكن كلهم ​​يشتركون في نفس الخصائص. و هذا السماد يتكون اساسا من النيتروجين والفوسفور والبوتاسيوم. ويشير كل رقم إلى النسبة المئوية لكل مادة كيميائية في الأسمدة، ومن ثم فإن 20٪ من الكيس الكلي سيكون من النيتروجين، و 20٪ من الفوسفور، و 20٪ من البوتاسيوم. بالنسبة للأسمدة 20-20-20، 40٪ المتبقية من المواد هي خاملة كيميائيا، ولكن سوف تساعد المواد الكيميائية النشطة في انتشارها الأسمدة و المساعدة على تناولها من قبل النباتات. ويمكن ان تجد بعض المواد الاخرى المفيدة للنبتة حسب كل مصنع.
و بطبيعة الحال السبب في إدراج هذه المواد الكيميائية الثلاث هي خصائصها المحددة لدعم نمو النبات. وسوف يساعد النيتروجين على نمو النبات فوق الأرض. و الفوسفور سيساعد على نمو النبات تحت الأرض. وسوف يساعد على تشكيل نظام جذور قوية. كما أنه سيساعد في إنتاج الزهور والفاكهة. أما البوتاسيوم يدعم الصحة العامة للنبات من خلال المساعدة في بناء خلايا قوية في الأنسجة النباتية.

المزيد

map في بايثون Python

من البديهي ان هناك بعض العمليات التي نقوم بتطبيقها بشكل متكرر على القوائم و ما شابهها من السلاسل. الدالة  map تسهل علينا هاته العملية بحيث نقوم بكتابة سطر واحد بدل عدة سطور. مثلا فيما يلي مثال على قائمة اصلية و نريد انشاء قائمة جديدة حسب عملية محددة تطبق على كل عنصر من اللائحة الاولى ثم يتم جمع النتائج في القائمة الجديدة.

بدون استعمال map

list1=[1,2,3,4,5]
list2=[]
for x in list1:
    list2.append(x**x)
print(list2)
النتيجة list2= [1, 4, 27, 256, 3125]

بأستعمال map

عامة عاته الدالة تتكون من عنصرين اساسيان فهي تكتب map(aFunction, aSequence) 
 aFunction : العملية او الدالة او الكلاس المراد تطبيقها
aSequence : القائمة الاساس المراد استعمالها 

اذن مثالنا سيصبح
  • في حالة عملية سريعة و بسيطة نستعمل دالة lambda للدوال المجهولة التي تستعمل لحظيا
list1=[1,2,3,4,5]
list2=list(map((lambda x: x**x), list1))   
print("list2=",list2)

  • في حالة استعمال دالة
list1=[1,2,3,4,5]
def cal(x):
    return x**x
list2=list(map(cal, list1))   
print("list2=",list2)

 
المزيد

فهم الودجة combo في tkinter

التطبيق الصغير أدناه يوضح لك كيفية بناء صنف جديد من ودجة  مكعبة من النوع كومبو. ويعرف هذا النوع على أنه ودجة تربط بين حقل الادخال وعلبة القائمة : يمكن للمستخدم الدخول إلى عناصر القائمة بالضغط على اسمها، أو إذا كان العنصر غير موجود يمكن كتابة اسم عنصر جديد من خلال حقل الادخال. نحن بسطنا الشكل فقط من خلال ترك اللائحة واضحة تماما لكن من المكن تحسين هذه الودجة بحيث يتم اضافة زر صغير للشكل التقليدي لحقل يساهم في ظهور القائمة، ويتم إخفاء هذا في البداية.
و كما تصورنا، الودجة الخاصة بنا combo سيتم تجميعها في كيان واحد من 3 ويدجات tkinter أساسية : حقل إدخال، مربع القائمة listbox وشريط تمرير.
مربع القائمة وشريط التمرير سيتم ربطهم، لأن شريط التمرير يسمح بالتحكم بعناصر القائمة. وسيتم أيضا التأكد من أن شريط التمرير سيكون متناسبا مع ارتفاع العلبة بصرف النظر عن الحجم الاولي.
سوف نضع علبة القائمة و شريط التمرير جنبا إلى جنب في إطرا Frame() ، ووضعه مع محتوياته في أسفل حقل الادخال، في إطار آخر. وسوف تكون جميع الويدجات التي لدينا مركبة في عنصر واحد.
لأختبار الودجة الخاصة بنا، سوف نقوم بتضمينها في تطبيق بسيط جدا : عندما يقوم المستخدم باختيار أحد الالوان من القائمة (يمكن أيضا إدخال اسم اللون مباشرة في حقل الدخال)، وهذا سيؤدي تلقائيا الى تغيير لون خلفية النافذة الرئيسة. في هذه النافذة الاساسية، سوف نضيف ملصق وزر، لتفهم اكثر كيفية الوصول إلى الاختيار الذي يتم اختياره في مكعب الكومبو(الزر يقوم بعرض اخر لون تم اختياره او التأشير عليه).

#! /usr/bin/env python
# -*- coding:Utf8 -*-

from tkinter import *

#الصنف او الكلاس الاساسي لمربع الكومبو
class ComboBox(Frame):
    "ودجة مكونة من حقل للأدخال و علبة قائمة"
    def __init__(self, boss, item='', items=[], command ='', width =10,listSize =5):
        Frame.__init__(self, boss)   # منشئ الصنف الاصل
                                     # (<boss> هو مرجع الودجة السيد)
        self.items =items            # العناصر التي سيتم اضافتها الى القائمة
        self.command =command        # الامر الذي سيتم استدعائه عند ال clic او <enter>
        self.item =item              # العنصر المضاف او الممختار
        # حقل الادخال :
        self.entree =Entry(self, width =width)          # طول الحروف
        self.entree.insert(END, item)
        self.entree.bind("<Return>", self.sortieE)
        self.entree.pack(side =TOP)
        # علبة القائمة بالاضافة لشريط التحريك (scroll bar) :
        cadreLB =Frame(self)                 # اطار يجمع العنصرين
        self.bListe =Listbox(cadreLB, height =listSize, width =width-1)
        scrol =Scrollbar(cadreLB, command =self.bListe.yview)
        self.bListe.config(yscrollcommand =scrol.set)
        self.bListe.bind("<ButtonRelease-1>", self.sortieL)
        self.bListe.pack(side =LEFT)
        scrol.pack(expand =YES, fill =Y)
        cadreLB.pack()
        # اضافة العناصر المختارة الى القائمة :
        for it in items:
            self.bListe.insert(END, it)
    def sortieL(self, event =None):
        # استخراج العنصر المختار من القائمة :
        index =self.bListe.curselection()      # إرجاع مصفوفة مغلقة للمؤشر
        ind0 =int(index[0])                    # نحتفظ بالاول فقط
        self.item =self.items[ind0]
        # تحديث حقل الادخال بالعنصر المختار :
        self.entree.delete(0, END)
        self.entree.insert(END, self.item)
        # تنفيد الامر بالعنصر المختار كبرامتر :
        self.command(self.item)
    def sortieE(self, event =None):
        # شغيل الامر المحدد مع يبرامتر تم ترميزه كما هو :
        self.command(self.entree.get())
    def get(self):
        # اظهار اخر عنصر تم اختياره في القائمة
        return self.item
if __name__ =="__main__":
#تشكيل البرنامج و الاوامر خارج الكومبو
    def changeCoul(col):
        fen.configure(background = col)

    def changeLabel():
        lab.configure(text = combo.get())

    couleurs = ('navy', 'royal blue', 'steelblue1', 'cadet blue',
                'lawn green', 'forest green', 'yellow', 'dark red',
                'grey80','grey60', 'grey40', 'grey20', 'pink')
    fen =Tk()
    combo =ComboBox(fen, item ="فارغ", items =couleurs, command =changeCoul,
                    width =15, listSize =6)
    combo.grid(row =1, columnspan =2, padx =10, pady =10)
    bou = Button(fen, text ="تجربة", command =changeLabel)
    bou.grid(row =3, column =0, padx =8, pady =8)
    lab = Label(fen, text ="مرحبا", bg ="ivory", width =15)
    lab.grid(row =3, column =1, padx =8)
    fen.mainloop()


--بتصرف--
المزيد

Tkinter: TopLevel windows نوافد منبتقة

الصنف ()Toplevel في tkinter يسمح بصنع نوافذ "منبتقة" لتطبيقك الاصلي. هذه النوافذ مستقلة، لكنها تغلق تلقائيا عند إغلق النافذة الرئيسية. يتم التعامل معها بالطريقة المعتادة التي تتم في النوافد الرئيسية : يمكن وضع أي مجموعة من الويدجات او الادوات المراد استعمالها بشكل عادي.
التطبق الصغير أدناه يوضح لك بعض قدرات هاته النوافد. سيتكون التطبيق من نافذة رئيسية عادية جدا، تحتوي على 3 أزرار.
هذه الازرار صنعت بصنف مشتق من صنف Button() الأساسي، وذلك لتعرف مرة أخرى كم هو من السهل تكييف أصناف الكائن الموجودة لاجل اعمالك. سوف تلاحظ بعض خيارات "الديكور او التنسيق" المثيرة للاهتمام.
الرز Top1 يظهر لك أول نافذة منبتقة تحتوي على لوحة فيها سورة. تتميز هذه النافذة بالخاصيات التالية : ليس لديها لا شعار لاعنوان ولا حدود، ومستحيل إعادة تحجيمها بواسطة الفأرة. بالاضافة إلى ذلك، هذه النافذة تشترط تواجدها في مقدمة جميع النوافذ الاخرى للتطبيقات الأخرى التي قد تكون موجودة على الشاشة.
الرز Top2 يعرض نافذة منبتقة كلاسيكية، تحتوي على نسختين من الودجات SpinBox. هذا الودجة تتكون من زران و شريط يظهر قيمة رقمية مرتبطة بالزرين. فالزران يسمحان بزيادة أو انقاص القيمة المعروضة على الشريط. بالاضافة إلى هذان SpinBoxe ، النافذة تحتوي على زر كبير مزين. عند الضغط عليه، يمكن للمستخدم تغيير حجم اللوحة (canvas) في نافذة منبتقة اخرى، حسب القيم الرقمية المعروضة في الودجتان  SpinBoxe .
الزر Exit لمغادرة النافذة
class FunnyButton(Button):
    "زر يتغير من اللون الاخضر الى الاحمر عند الضغط عليه"
    def __init__(self, boss, **Arguments):
        Button.__init__(self, boss, bg ="dark green", fg ="white", bd=5, activebackground ="red",
                        activeforeground ="yellow",font =('Helvetica', 12, 'bold'), **Arguments)
 
إذا كنت ترغب في الحصول على نفس تصميم الازرار المختلفة في الاجزاء المختلفة من مشروعك، لا تتردد في صنع فئة مشتقة، كما فعلنا هنا. وهذا سيوفر عليك اعادة برمجة نفس الخيارات المحددة لكل زر.
لاحظ النجمتين التي بدأنا بها اسم نهاية برامتر المنشئ : ** Arguments (**برامترات). وهذا يعني أن هذا المتغير هو عبارة عن قاموس، قادر على تلقي تلقائيا  مجموعة من البرامترات. هذه البرامترات يمكنها تمرير نفسها للمنشئ  او الصنف الاصل. وهذا يعفينا من الاضطرار إلى إعادة كتابة جميع الخيارات  للزر والتي هي كثيرة جدا. وأيضا يمكنك تخصيص هذه الازرار مع أي مجموعة من الخيارات، طالما أنها متاحة لزر الاساس. ونسمي هذا بالبرامترات الضمنية. يمكنك استخدام هذا الشكل من البرامترات مع أي دالة أو أسلوب.
class SpinBox(Frame):
    "ودجة تتكون من شريط و زرين زائد و ناقص"
    def __init__(self, boss, largC=5, largB =2, vList=[0], liInd=0, orient =Y):
        Frame.__init__(self, boss)
        self.vList =vList       #قائمة القيم المتوفرة
        self.liInd =liInd       # مؤشر قيمة العرض الافتراضي
        if orient ==Y:
            s, augm, dimi = TOP, "^", "v"           # التوجيه ' عمودي '
        else:
            s, augm, dimi = RIGHT, ">", "<"     # التوجيه ' أفيق '
        Button(self, text =augm, width =largB, command =self.up).pack(side =s)
        self.champ = Label(self, bg ='white', width =largC,text =str(vList[liInd]), relief =SUNKEN)
        self.champ.pack(pady =3, side =s)
        Button(self, text=dimi, width=largB, command =self.down).pack(side =s)
 
 منشئ الودجة الخاص ب SpinBox لا يحتاج إلا القليل من الشرح. إعتمادا على التوجيه المطلوب، الاسلوب pack()  يتيح لك أزرار وملصقات من الاعلى الى الاسفل أو اليمين الى اليسار )حسب البرامترات TOP او RIGHT في الخيار side.
    def up(self):
        if self.liInd < len(self.vList) -1:
            self.liInd += 1
        else:
            self.bell() # صوت تنبيه
            self.champ.configure(text =str(self.vList[self.liInd]))

    def down(self):
        if self.liInd > 0:
            self.liInd -= 1
        else:
            self.bell() # صوت تنبيه
            self.champ.configure(text =str(self.vList[self.liInd]))

    def get(self):
        return self.vList[self.liInd]


هذان الاسلوبان لا يفعلان شيئا أكثر من تعديل القيمة المعروضة في الملصق او الشريط. لاحظ أن الصنف Frame () لديه أسلوب bell () لاصدار صوت "بيب"


class FenDessin(Toplevel):
    "Fenêtre satellite (modale) contenant un simple canevas"
    def __init__(self, **Arguments):
        Toplevel.__init__(self, **Arguments)
        self.geometry("250x200+100+240")
        self.overrideredirect(1) # => نافذة دون حدود
        self.transient(self.master) # => نافذة 'modale'          
        self.can =Canvas(self, bg="ivory", width =200, height =150)
        self.img = PhotoImage(file ="papillon2.gif")
        self.can.create_image(90, 80, image =self.img)
        self.can.pack(padx =20, pady =20)


تعريف النافذة المنبتقة الاولى هنا. لاحظ مرة أخرى استخدام البرامتر الضمني للمنشئ بمساعدة المتغير ** Arguments . هذا هو الذي يسمح لنا بتشكيل هذه النافذة عن طريق تحديد لون الخلفية (الحدود، إلخ ...). تم ايضا هنا استدعاء تعريف بعض خصائص التي تنطبق على أي نافذة. الاسلوب geometry () يسمح لك بتعيين إحداثيات النافذة ومكانها غلى الشاشة.  100+240 تعني أنه ينبغي تحويل الزاوية العلوية اليسرى 100 بيكسل إلى اليمين و 240 بيكسل أسفل زاوية اليسرى العلوية من الشاشة.

class FenControle(Toplevel):
    "Fenêtre satellite contenant des contrôles de redimensionnement"
    def __init__(self, boss, **Arguments): 


يرجى ملاحظة الفرق الصغير بين قوائم البرامترات لهذه الاسطر. في منشئ FenDessin ،تم حذف البرامتر boss ، الموجود في منشئ FenControle . هل تعلم أن هذا البرامتر يستخدم لتمرير مرجع الودجة  "السيد" ل "عبيده". وهو عموما ضروري، لكن لم يكن ضروريا للغاية : في FenDessin ليست له اي فائدة. سوف تجد الفرق واضحا في تعليمات التمثيل لهذه النوافذ.

        Toplevel.__init__(self, boss, **Arguments)
        self.geometry("250x200+400+230")
        self.resizable(width =0, height =0) # => منع تغيير
        p =(10, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300)
        self.spX =SpinBox(self, largC=5,largB =1,vList =p,liInd=5,orient =X)
        self.spX.pack(pady =5)
        self.spY =SpinBox(self, largC=5,largB =1,vList =p,liInd=5,orient =Y)
        self.spY.pack(pady =5)
        FunnyButton(self, text ="Dimensionner le canevas",command =boss.redimF1).pack(pady =5)


 باستثناء الفرق المذكور أعلاه، منشئ الودجة FenControle مشابه جدا ل FenDessin . لاحظ الاسلوب الذي يسمح بمنع تغيير حجم النافذة ( في حالة النافذة بدون حدود وبدون عنوان، مثل FenDessin ، سيكون هذا السلوب بدون جدى)

class Demo(Frame):
    "Démo. de quelques caractéristiques du widget Toplevel"
    def __init__(self):
        Frame.__init__(self)
        self.master.geometry("400x300+200+200")
        self.master.config(bg ="cadet blue")
        FunnyButton(self, text ="Top 1", command =self.top1).pack(side =LEFT)
        FunnyButton(self, text ="Top 2", command =self.top2).pack(side =LEFT)
        FunnyButton(self, text ="Quitter", command =self.quit).pack()
        self.pack(side =BOTTOM, padx =10, pady =10)
    def top1(self):
        self.fen1 =FenDessin(bg ="grey")
    def top2(self):
        self.fen2 =FenControle(self, bg ="khaki")
    def redimF1(self):
        dimX, dimY = self.fen2.spX.get(), self.fen2.spY.get()
        self.fen1.can.config(width =dimX, height =dimY)

if __name__ =="__main__": # --- يبرنامج التجريةب ---
    Demo().mainloop()   
   

في هذا الجزء جميع الاصناف المشتقة هي ويدجات tkinter مميزة تلقائيا بسمة master ، الذي يحتوي على مرجع الصنف الاصل. الذي يسمح لنا بالوصول إلى أبعاد ولون خلفية النافذة الرئيسية.
الاسلوب بعد الدالة redimF1 يسترد القيم الرقمية المعروضة في نافذة التحكم. فالاسلوب get () لهذه الودجة يسمح باعادة تحجيم الوحة في النافذة المنبتقة. هذا المثال البسيط يبين لك كيفية تحقيق تواصل بين مخلتف مكونات البرنامج.
المزيد

التحقق من المحتوى المكتوب في القطعة Entry من tkinter

اسهل طريقة لحصر ادخال الارقام فقط في الوحدة Entry  من tkinter هي :

from tkinter import *

root
= Tk()

def testVal(inStr,i,acttyp):
ind
=int(i)
if acttyp == '1': #insert
if not inStr[ind].isdigit():
return False
return True

entry
= Entry(root, validate="key")
entry
['validatecommand'] = (entry.register(testVal),'%P','%i','%d')
entry
.pack()

root
.mainloop()
 
منقول للفائدة
المزيد

بيثون: فحص نوع المتغير

تعتبر isinstance () الطريقة المفضلة للتحقق من نوع المتغير في بايثون. بحيث يتم التحقق إذا كان المتغير (الكائن) مثيل للكائن فئة type او لا.
مثال :
# متغيرات من أنواع مختلفة
>>> i = 1
>>> isinstance(i, int)
True
>>> f = 0.1
>>> isinstance(f, float)
True
>>> s = "Hell"
>>> isinstance(s, str)
True
>>> l = [0, 1, 2]
>>> isinstance(l, list)
True
>>> d = {0:"Zero", 1:"One"}
>>> isinstance(d, dict)
True
>>> t = (0, 1, 2)
>>> isinstance(t, tuple)
True
>>> n = None
>>> n is None
True
>>> b = True
>>> isinstance(b, bool)
True
المزيد

تعلم بايثون Python

بيثون لغة سهلة للتعلم، ; لغة برمجة قوية. ولها هياكل بيانية عالية المستوى و  فعالة ونهج بسيط ولكن فعال للبرمجة الموجهة نحو الكائن. بيثون تتميز بجمل أنيقة و كتابة ديناميكية، جنبا إلى جنب مع طبيعتها التفسيرية، ما جعلها لغة مثالية للبرمجة وتطوير التطبيقات السريعة في العديد من المجالات  و على معظم المنصات.

مترجم بيثون و المكتبات القياسية الواسعة متاحة و مجانا على شكل ملف مصدري أو ملف ثنائي قابل للتتبيث لجميع المنصات الرئيسية و من موقع بايثون على شبكة الإنترنت، https://www.python.org، ويمكن توزيعها بحرية. ويحتوي الموقع نفسه أيضا على توزيعات مصدرها اطراف ثالثة على شكل وحدات وبرامج بايثون مجانية، بالإضافة إلى وثائق إضافية.

يتم توسيع مترجم بايثون بسهولة بوظائف جديدة و بأنواع البيانات التي يتم تنفيذها في C أو C ++ (أو لغات أخرى يمكن استدعاؤها من C). بيثون مناسبة ايضا كلغة تضاف لتطبيقات قابلة للتخصيص.

هذا البرنامج التعليمي يقدم القارئ المفاهيم الأساسية و مميزات لغة بيثون ونظامها. فإنه يساعد على أن يكون مترجم بايثون في متناول اليدين للتدريب العملي. كل الأمثلة تحتوي مضمونها بذاتها، وبالتالي فإن البرنامج التعليمي يمكن قراءته بدون ارتباط بالانترنيت.

للحصول على وصف و شرح للكائنات القياسية والوحدات، راجع مكتبة بيثون القياسية. فمرجع لغة بايثون سيعطيك تعريفا أكثر رسمية للغة. لكتابة ملحقات في C أو C ++، اقرأ Extending and Embedding the Python Interpreter and Python/C API Reference Manual. وهناك أيضا العديد من الكتب التي تغطي بيثون في العمق.

هذا البرنامج التعليمي لا يحاول أن يكون شاملا ويغطي كل المميزة، أو حتى كل ميزة شائعة الاستخدام. بدلا من ذلك، فإنه يقدم العديد من سمات بيثون الأكثر أهمية، وسوف تعطيك فكرة جيدة عن نكهة اللغة وأسلوبها. بعد قراءته، سوف تكون قادرا على قراءة وكتابة وحدات بيثون والبرامج في بيتون، وسوف تكون على استعداد لمعرفة المزيد عن مختلف وحدات مكتبة بيثون الموجودة في مكتبة بيثون القياسية. 

    1. حرك شهيتك
    2. استخدام مفسر بايثون
    3. مقدمة لبيثون
        3.1. استخدام بيثون كآلة حاسبة
            3.1.1. أعداد
            3.1.2. سلاسل نصية
            3.1.3. قوائم
        3.2. الخطوات الأولى نحو البرمجة
    4. المزيد من أدوات التحكم
        4.1. بارة if
        4.2. عبارة for
        4.3. الدالة range()
        4.4. break and continue Statements, and else Clauses on Loops
        4.5. عبارة pass
        4.6. تحديد الدوال
        4.7. المزيد حول تحديد الدوال
            4.7.1. قيم الوسيط الافتراضية
            4.7.2. مفتاح الوسائط Keyword Arguments
            4.7.3. قوائم الوساطة الاعتباطية
            4.7.4. تفريغ قوائم الوسائط
            4.7.5. عبارات Lambda
            4.7.6. وثائق تعريفية ب Strings
            4.7.7. التعليقات التوضيحية للدوال Function
        4.8. Intermezzo: أسلوب ترميز
    5. هياكل البيانات
        5.1. المزيد عن القوائم
            5.1.1. استخدام القوائم ككومة
            5.1.2. استخدام القوائم كطوابق
            5.1.3. فهم القوائم
            5.1.4. فهم القوائم المتداخلة
        5.2. عبارة del
        5.3.     Truples و Sequences
        5.4. Sets
        5.5. القواميس Dictionaries
        5.6. تقنيات الحلقات
        5.7. المزيد عن الشروط
        5.8. مقارنة السلاسل والأنواع الأخرى
    6. الوحدات Modules
        6.1. المزيد عن وحدات
        6.2. الوحدات القياسية
        6.3. الدالة dir()
        6.4. الحزم Packages

    7. المدخلات والمخرجات (Input Output)
  
    8. الأخطاء والاستثناءات

    9. الفصول Classes

    10. جولة موجزة في المكتبة القياسية

    11. جولة موجزة للمكتبة القياسية - الجزء الثاني

    12. البيئات الافتراضية والحزم

    13. ماذا الآن؟
  
    14. تحرير الإدخال التفاعلي

    15. Floating Point Arithmetic

    16 الوضع التفاعلي
            16.1.1. معالجة الأخطاء
            16.1.2. البرامج النصية بيثون القابلة للتنفيذ
            16.1.3. ملف بدء التشغيل التفاعلي
            16.1.4. وحدات التخصيص

المزيد

String السلاسل النصية في بايثون Python

String عبارة عن قائمة  من الأحرف المرتبة. فالحرف هو أي شيء يمكنك كتابته على لوحة المفاتيح في ضغطة واحدة، مثل حرف أو رقم أو شرطة مائلة او غيرها. السلاسل يمكن أن يكون بينها مسافات مثل "مرحبا العالم" او فارغة اي عبارة عن سلسلة لا تحتوي على اي حرفا.
السلاسل النصية في  بايثون غير قابلة للتغيير
في بايثون كل ما هو محدد  بعلامات الاقتباس فهو string  (بين "" أو بين ' ' ).

التعامل مع ال String  في بايثون :

word = "Hello World" #انشاء المتغير

print (word)
#طباعة المتغيير
 
print (word[0]) #استخدم [] للوصول إلى الأحرف في سلسلة النتيجة (H) ا
len(word)
#الطول 11

print word.count('l') # حساب عدد ل في الجملة = 3

print word.find("H") # البحث عن اش في الكلمة = النتيجة في اول الكلمة اي 0
 
s =  "Count, the number     of spaces"
print (s.count(' '))
#حساب عدد الفراغات في الجملة النتيجة =8

print (word[0]) # الحصول على حرف واحد من الكلمة
print (word[0:1]) # الحصول على حرف واحد من الكلمة (نفس ما سبق)
print (word[0:3]) # الحصول على الحرف ثلاثة الأولى
print (word[:3]) # الحصول على الحرف الأول ثلاثة
print (word[-3:]] # احصل على الحرف الثالث الأخير
print (word[3:]) # الحصول على كل ما عدا ثلاثة أول شار
print (word[:-3]) # احصل على كل حرف آخر ثلاثة

print(word.split(' ')) # تقسيم الى سلسلة عند كل مساحة فارغة مثلا ['Hello', 'World']



print ("a"* 10) # كتابة الحرف a عشر مرات


word.replace("Hello", "Goodbye") #تعويض كلمة بأخرى 'Goodbye World' 
 
string = "Hello World"

string.upper() #لجعل جميع الحروف كبيرة HELLO WORLD
string.lower() #
لجعل جميع الحروف صغيرة hello world
string.title() #
لجعل الحرف الاول من كل كلمة كبيرا Hello World
string.capitalize() #
لجعل الحرف الاول من الجملة كبيرا Hello world
string.swapcase() #
لجعل الحروف كبيرة في الجملة صغيرة و العكس بالعكس hELLO wORLD
reversed(string) #عكس النص




word.strip() # ازالة المساحات الفارغة او اي شيء تختاره على اليمين و اليسار

word.lstrip() #
ازالة المساحات الفارغة او اي شيء تختاره على اليسار

word.rstrip() #
ازالة المساحات الفارغة او اي شيء تختاره على اليمين  
 
 
"Hello " + "World"         #النتيجة  = "Hello World"
"Hello " + "World" + "!" #النتيجة = "Hello World!"

print ":".join(word) # #
اضافة نقطتين بين كل عنصر = H:e:l:l:o: :W:o:r:l:d

print (" ".join(word)) # اضافة مساحة فارغة بين كل عنصر =
H e l l o W o r l d

word.isalnum() # للتأكد من أن جميع المكونات رقمية
word.isalpha() # لتأكد من أن عناصر النص كلها حروف
word.isdigit() # هل السلسلة تحتوي على أرقام
word.istitle() #
هل السلسلة تحتوي على عناوين
word.isupper() #
هل السلسلة تحتوي على حروف كبيرة
word.islower() #
هل السلسلة تحتوي على حروف صغيرة
word.isspace() #
هل السلسلة تحتوي على مساحات فارغة
word.endswith('d') #
هل السلسلة تنتهي بالحرف 'd'
word.startswith('H') # H
هل السلسلة تبدأ بالحرف 'H'
المزيد

Pyhton يضيف في الملف الجديد المصدر مسافات بين الأحرف

هذا المشكل مرتيط اساسا بتشفير ملفك الاصلي، و لتجاوز هذا المشكل يكفي ان تضيف encoding="" الى الامر open ليصبح امر قراءة ملف  كما يلي :

with open("example.txt", "r", encoding="utf-16") as myfile: #utf-16 مثال
lines
= infile.readlines()
المزيد

تغيير نص ال LABEL في tkinter

الامر سهل جدا و تستطيع القيام بما يلي:

الطريقة الاولى :


self.LabalName['text'] = 'النص البديل هنا'

الطريقة التانية :


self.LabalName.config(text='النص البديل هنا')

المزيد

طريقة ادراج قائمة الجداول بقاعدة بيانات الاكسس بواسطة بيثون

اولا عليك تتينث الحزمة pyodbc
والكود كالتالي 
 import pyodbc
db = 'C:/.........../essai.accdb'   #ضع الرابط كاملا
constr = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=' + db

conn = pyodbc.connect(constr, autocommit=True)
cur = conn.cursor()

tables = list(cur.tables())

print ('tables')
for b in tables:
    print (b[2])
المزيد