0% found this document useful (0 votes)
57 views18 pages

Learning Tkinter

Uploaded by

Mehdi Noori
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views18 pages

Learning Tkinter

Uploaded by

Mehdi Noori
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

‫»ﺑﻪ ﻧﺎم ﺧﺪاوﻧﺪ ﺑﺨﺸﻨﺪه و ﻣﮫﺮﺑﺎن«‬

‫آﻣﻮزش ‪ tkinter‬ﺑﻪ زﺑﺎن ﺳﺎده‬


‫ﻧﻮﯾﺴﻨﺪه ‪ :‬ﺳﯿﺪ ﻣﺤﻤﺪرﺿﺎ ﺣﺴﯿﻨﯿﺎن راوﻧﺪی‬
‫وﺑﺴﺎﯾﺖ‪www.pachenar.ir :‬‬
‫وﺑﻼگ‪www.barnamenevisi.blogsky.com :‬‬
‫راﯾﺎﻧﺎﻣﻪ‪[email protected] :‬‬
‫ﺗﺎرﯾﺦ‪١٣٩٢/١/١:‬‬
‫ﻣﻘﺪﻣﻪ‬
‫اﺑﺘﺪا ﯾﺎدی ﻣﯽ ﮐﻨﻢ از ﺷﮫﺪای اﻧﻘﻼب اﺳﻼﻣﯽ اﯾﺮان و ﺷﮫﺪای ھﺸﺖ ﺳﺎل دﻓﺎع‬
‫ﻣﻘﺪس و ھﻤﭽﻨﯿﻦ ﯾﺎدی ﻣﯿﮑﻨﻢ از رھﺒﺮ ﮐﺒﯿﺮ اﻧﻘﻼب اﺳﻼﻣﯽ اﻣﺎم ﺧﻤﯿﻨﯽ )ره(‪.‬‬
‫اﯾﻦ ﮐﺘﺎب رو و اﯾﻦ ﺗﻼش رو ﺗﻘﺪﯾﻢ ﻣﯿﮑﻨﻢ ﺑﻪ روح ﭘﺎک آن ﺑﺰرﮔﻮاران‪.‬‬

‫در اﯾﻦ ﮐﺘﺎب ﺑﻪ آﻣﻮزش ‪ tkinter‬ﻣﯽ ﭘﺮدازﯾﻢ ﺑﺮای ﯾﺎدﮔﯿﺮی ‪tkinter‬ﺷﻤﺎ ﺑﺎﯾﺪ ﻗﺒﻼً ‪ python‬ﮐﺎر ﮐﺮده‬
‫ﺑﺎﺷﯿﺪ‪ tkinter.‬ﮐﺘﺎﺑﺨﺎﻧﻪی واﺳﻂ ﮐﺎرﺑﺮ ﮔﺮاﻓﯿﮑﯽ ﺑﺮای زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﭘﺎﯾﺘﻮن اﺳﺖ‪.‬‬

‫ﺗﮑﯿﻨﺘﺮ‪http://fa.wikipedia.org/wiki/‬‬

‫‪http://wiki.python.org/moin/TkInter‬‬

‫واﺳﻂ ﮔﺮاﻓﯿﮑﯽ‪:‬‬

‫واﺳﻂ ﮔﺮاﻓﯿﮑﯽ ﭼﯿﺴﺖ؟‬


‫واﺳﻂ_ﮔﺮاﻓﯿﮑﯽ_ﮐﺎرﺑﺮ‪http://fa.wikipedia.org/wiki/‬‬

‫ﺑﺮای ﭘﺎﯾﺘﻮن واﺳﻂ ﮔﺮاﻓﯿﮑﯽ ﮐﺎرﺑﺮ ﺑﺴﯿﺎری ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ ﭘﺮﮐﺎرﺑﺮدﺗﺮﯾﻦ آﻧﮫﺎ ﺑﻪ ﺷﺮح زﯾﺮ ﻣﯽ‬
‫ﺑﺎﺷﺪ‪:‬‬
‫‪) tkinter‬ﺑﻪ ﺻﻮرت ﭘﯿﺶﻓﺮض ھﻤﺮاه ﺑﺎ ﻧﺴﺨﻪھﺎی اﺳﺘﺎﻧﺪارد ﭘﺎﯾﺘﻮن اراﺋﻪ ﻣﯽﺷﻮد و ﯾﮏ راﺑﻂ‬
‫ﺷﯽﮔﺮا ﺑﺮای اﺑﺰار ‪ Tcl/Tk‬در ﻣﺤﯿﻂ ﭘﺎﯾﺘﻮن ﻓﺮاھﻢ ﻣﯽﮐﻨﺪ(‪.‬‬
‫‪PyGTK‬‬
‫‪wxPython‬‬
‫‪pyFLTK‬‬
‫‪FXpy‬‬
‫‪PyOpenGL‬‬

‫ﭘﺎﯾﺘﻮن‪ :‬ﯾﮏ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ اﺳﺖ ﮐﻪ ھﻢ ﻣﯿﺸﻪ ﺑﺮﻧﺎﻣﻪ ی ﺗﺤﺖ وب ﺑﺎھﺎش ﻧﻮﺷﺖ و ھﻢ‬
‫ﺗﺤﺖ دﺳﮑﺘﺎپ و ﺣﺘﯽ ﻣﯿﺸﻪ ﺑﺎ اون ﺑﺮﻧﺎﻣﻪ ای ﻧﻮﺷﺖ ﮐﻪ روی ﮔﻮﺷﯽ ھﺎی ھﻮﺷﻤﻨﺪ ھﻢ اﺟﺮا‬
‫ﺑﺸﻪ‪.‬‬
‫)ﭘﺎﯾﺘﻮن )زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ‪http://fa.wikipedia.org/wiki/‬‬
‫ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺎ اﺳﺘﻔﺎده از ‪ tkinter‬ﯾﮏ ﺑﺮﻧﺎﻣﻪ ی ﺗﺤﺖ دﺳﮑﺘﺎپ ﺑﻨﻮﯾﺴﯿﺪ ‪.‬‬
‫ﺗﺤﺖ دﺳﮑﺘﺎپ ﭼﯿﺴﺖ؟‬
‫ﺑﺮﻧﺎﻣﻪ ھﺎﯾﯽ ﮐﻪ ﺑﻪ ﺻﻮرت ﺗﺤﺖ دﺳﮑﺘﺎپ ﻧﻮﺷﺘﻪ ﻣﯿﺸﻮﻧﺪ ﺑﺮ ﻋﮑﺲ ﺑﺮﻧﺎﻣﻪ ھﺎﯾﯽ ﮐﻪ ﺑﻪ ﺻﻮرت ﺗﺤﺖ‬
‫وب ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮﻧﺪ روی ﺧﻮد ﺳﯿﺴﺘﻢ ﮐﺎرﺑﺮ اﺟﺮا و ﻧﺼﺐ ﻣﯽ ﺷﻮﻧﺪ وﻟﯽ ﺑﺮﻧﺎﻣﻪ ھﺎی ﺗﺤﺖ وب‬
‫روی ﺳﺮور ﺳﺎﯾﺖ ﻧﺼﺐ و اﺟﺮا ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﻣﺜﻼ ﺑﺮﻧﺎﻣﻪ ھﺎﯾﯽ ﮐﻪ ﺑﺎ ﻧﺴﺨﻪ ی ﺗﺤﺖ وب ‪ php‬ﻧﻮﺷﺘﻪ‬
‫ﻣﯽ ﺷﻮﻧﺪ روی ﺳﺮور ﺳﺎﯾﺖ ﻧﺼﺐ و اﺟﺮا ﻣﯿﺸﻮﻧﺪ وﻟﯽ ﺑﺮﻧﺎﻣﻪ ای ﻣﺜﻞ ‪Adobe Acrobat Reader‬‬
‫ﮐﻪ ﺑﺎھﺎش ﻓﺎﯾﻞ ھﺎی ‪ pdf‬را ﺗﻮی ﺳﯿﺴﺘﻢ ﻣﺸﺎھﺪه ﻣﯽ ﮐﻨﯿﺪ ﺗﺤﺖ دﺳﮑﺘﺎپ ھﺴﺘﻨﺪ‪.‬‬
‫ﭘﺎﯾﺘﻮن ﯾﮏ زﺑﺎن ‪ platform‬اﺳﺖ‪.‬ﭘﻠﺖ ﻓﺮم ﯾﻌﻨﯽ اﯾﻨﮑﻪ ﺑﺮﻧﺎﻣﻪ ھﺎﯾﯽ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﻧﻮﯾﺴﯿﺪ روی ھﻤﻪ‬
‫ی ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ھﺎ ﻧﺼﺐ و اﺟﺮا ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﭘﺎﯾﺘﻮن ﯾﮏ زﺑﺎن ﻣﻨﺒﻊ ﺑﺎز اﺳﺖ )‪ (open source‬ﻣﻨﺒﻊ ﺑﺎز ﯾﻌﻨﯽ اﯾﻨﮑﻪ ﻣﯿﺸﻪ راﺣﺖ ﺑﻪ ﺳﻮرس)ﻣﻨﺒﻊ‬
‫ﯾﺎ ھﻤﻮن ﮐﺪھﺎی ﺑﺮﻧﺎﻣﻪ( دﺳﺘﺮﺳﯽ ﭘﯿﺪا ﮐﺮد ﺑﺮﻧﺎﻣﻪ ھﺎی ﺳﻮرس ﺑﺎز رو ﻣﯿﺸﻪ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ی‬
‫‪ notepad‬وﯾﻨﺪوز ھﻢ ﻧﻮﺷﺖ‪ .‬اﻟﺒﺘﻪ ﺑﺎ ﺑﺮﺧﯽ ﺑﺮﻧﺎﻣﻪ ھﺎ ﻣﯿﺎن ﺳﻮرس رو ﺑﻪ ﺻﻮرت رﻣﺰﮔﺬاری ﺷﺪه در‬
‫ﻣﯿﺎرن‪.‬‬
‫ﺧﺼﻮﺻﯿﺖ دﯾﮕﺮ ﭘﺎﯾﺘﻮن ﺳﺎدﮔﯽ آن اﺳﺖ اﮔﺮ ﻣﺒﺘﺪی ﺑﺎﺷﯿﺪ و ﺑﺨﻮاھﯿﺪ ﺑﺎ ﺟﺎوا ﯾﺎ ‪ c#‬ﮐﺎر ﮐﻨﯿﺪ ﻣﻄﻤﺌﻨﺎ‬
‫ﺑﺮاﯾﺘﺎن ﻣﺸﮑﻞ ﺧﻮاھﺪ ﺑﻮد‪ ،‬زﺑﺎﻧﯽ ﻣﺜﻞ ﺟﺎوا ﮐﺎﻣﻼً ﺷﯽ ﮔﺮاﯾﯽ ھﺴﺖ وﻟﯽ ﭘﺎﯾﺘﻮن ھﻢ روﯾﻪ ﮔﺮاﺳﺖ)‬
‫ﺑﻪ ﺻﻮرت ﺳﺎده ﻧﻮﺷﺘﻪ ﻣﯿﺸﻪ( و ھﻢ ﺷﯽ ﮔﺮاﺳﺖ‪ .‬و ﻣﯿﺸﻪ آن را ﮔﺴﺘﺮش ھﻢ داد‪.‬‬
‫ﺳﺮﻋﺖ‪ :‬ﺑﺮﻧﺎﻣﻪ ھﺎی ﭘﺎﯾﺘﻮن ﺑﺎ ﺳﺮﻋﺖ ﺑﯿﺸﺘﺮی ﻧﺴﺒﺖ ﺑﻪ ﺧﯿﻠﯽ از ﺑﺮﻧﺎﻣﻪ ھﺎ اﺟﺮا ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫اﺑﺰار ھﺎی ﻣﻮرد ﻧﯿﺎز ﺑﺮای ﮐﺎر ﺑﺎ ‪: tkinter‬‬


‫ﻣﺎ ﭼﻮن ﺑﺎ ﭘﺎﯾﺘﻮن ‪ ٣٫٣٫٠‬ﮐﺎر ﻣﯽ ﮐﻨﯿﺪ ﺑﺎﯾﺪ اول ﭘﺎﯾﺘﻮن رو از اﯾﻦ آدرس داﻧﻠﻮد ﮐﻨﯿﻢ‪:‬‬
‫‪http://www.python.org/download/‬‬
‫ﺣﺎﻻ ﺷﻤﺎ ﺑﻪ ﯾﮏ ﻧﺮم اﻓﺰار وﯾﺮاﯾﺸﮕﺮ ﺑﺮای ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ھﺎی ﺧﻮد ﻧﯿﺎز دارﯾﺪ ﮐﻪ اﯾﻦ ﺑﺮﻧﺎﻣﻪ ھﻤﺮاه‬
‫ﺧﻮد ﻧﺮم اﻓﺰار ﭘﺎﯾﺘﻮن ھﺴﺖ ‪ .‬وﻗﺘﯽ ﭘﺎﯾﺘﻮن رو ﻧﺼﺐ ﮐﺮدﯾﺪ ﺑﻪ ‪ All program‬رﻓﺘﻪ و ﺳﭙﺲ ‪Python‬‬
‫‪ 3.3‬و ﺑﻌﺪ از آن )‪ IDLE(Python GUI‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪.‬‬
‫ﺑﺮای ﮐﺎر ﺑﺎ ﭘﺎﯾﺘﻮن در اﯾﻦ ﺻﻔﺤﻪ ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﻣﺜﻼ ﺑﺮای ﭼﺎپ رﺷﺘﻪ دﺳﺘﻮر زﯾﺮ را وارد ﮐﻨﯿﺪ‪:‬‬

‫)"‪print("ravandi‬‬
‫‪out: ravandi‬‬
‫ﺑﺮای اﯾﻨﮑﻪ راﺣﺖ ﺗﺮ ﺑﺎ اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﮐﺎر ﮐﻨﯿﺪ ﺑﻪ ﻣﻨﻮی ‪ file‬و ﺳﭙﺲ ‪ new‬رﻓﺘﻪ و ﮔﺮﯾﻨﻪ ی ‪New‬‬
‫‪ window‬را ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﺗﺎ ﭘﻨﺠﺮه ﺑﺎز ﺷﻮد ‪.‬و ﺳﭙﺲ ﮐﺪھﺎی ﺧﻮد را وارد ﮐﻨﯿﺪ ﺑﺮای اﺟﺮای ﺑﺮﻧﺎﻣﻪ ی‬
‫ﺧﻮد ﻣﯽ ﺗﻮاﻧﯿﺪ ﻓﺎﯾﻞ ھﺎی ﺧﻮد را ھﻢ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ .py‬و ھﻢ ‪ .pyw‬در ھﺮ ﺟﺎی وﯾﻨﺪوز ﮐﻪ ﺧﻮاﺳﺘﯿﺪ‬
‫ذﺧﯿﺮه ﮐﻨﯿﺪ‪ .‬اﮔﻪ ﺑﺎ ‪ pyw‬ذﺧﯿﺮه ﮐﻨﯿﺪ دﯾﮕﻪ ﺑﺮﻧﺎﻣﻪ ی ‪ command prompt‬ﻧﻤﺎﯾﺶ داده ﻧﻤﯿﺸﻪ‪.‬‬
‫ﺑﮫﺘﺮه ﺷﻤﺎ از ھﻤﯿﻦ وﯾﺮاﯾﺸﮕﺮ ﭘﺎﯾﺘﻮن اﺳﺘﻔﺎده ﮐﻨﯿﺪ ﭼﻮن ﻗﺎﺑﻠﯿﺖ اﯾﻦ را دارد ﮐﻪ ﺧﻄﺎ ھﺎ رو ھﻢ ﺑﻪ‬
‫ﺷﻤﺎ اﻃﻼع دھﺪ‪.‬‬
‫ﯾﮏ ﺑﺮﻧﺎﻣﻪ ی ﺳﺎده ﺑﺎ ‪: tkinter‬‬
‫ﺑﺮﻧﺎﻣﻪ ای ﺑﺮای ﻧﻤﺎﯾﺶ ﻣﺘﻦ روی ﺑﺮﭼﺴﺐ‪:‬‬
‫*‪from tkinter import‬‬
‫اﻳﺠﺎد ﭘﻨﺠﺮه ‪#‬‬
‫)(‪barname = Tk‬‬
‫اﻧﺪازه ی ﭘﻨﺠﺮه‪#‬‬
‫)"‪barname.geometry("150x100‬‬
‫ﻋﻨﻮان ﺑﺮﻧﺎﻣﻪ‪#‬‬
‫)'ﻋﻨﻮان ﭘﻨﺠﺮه'(‪barname.title‬‬
‫اﯾﺠﺎد ﺑﺮﭼﺴﺐ‪#‬‬
‫)"راوﻧﺪي"=‪w = Label(barname, text‬‬
‫ﻧﻤﺎﯾﺶ ﺑﺮﭼﺴﺐ‪#‬‬
‫)(‪w.pack‬‬
‫)(‪mainloop‬‬
‫در ﺧﻂ اول ﮐﺘﺎﺑﺨﺎﻧﻪ ی ‪ tkinter‬را وارد ﮐﺮدﯾﻢ‬
‫ﺑﺮای ﺗﻮﺿﯿﺤﺎت ﯾﮏ ﺧﻄﯽ ﻣﺎ از ‪ #‬اﺳﺘﻔﺎده ﮐﺮدﯾﻢ‪.‬‬
‫ﺑﺮای ﺗﻮﺿﯿﺤﺎت ﭼﻨﺪ ﺧﻄﯽ ھﻢ از روش زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬
‫"""‬
‫ﻣﺘﻦ ﭼﻨﺪ ﺧﻄﻲ‬
‫ﺧﻂ دوم‬
‫ﺧﻂ ﺳﻮم‬
‫ﺧﻂ ﭼﮫﺎرم‬
‫"""‬
‫اﮔﺮ ﺑﺮﻧﺎﻣﻪ )(‪ mainloop‬ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ﺑﺎ داﺑﻞ ﮐﻠﯿﮏ روی ﻓﺎﯾﻞ ﺑﺮﻧﺎﻣﻪ ‪ ،‬ﺑﺮﻧﺎﻣﻪ اﺟﺮا ﻧﺨﻮاھﺪ ﺷﺪ‪.‬‬
‫ﻧﮑﺘﻪ اﯾﻨﮑﻪ در ﻧﺴﺨﻪ ھﺎی دﯾﮕﺮ ﭘﺎﯾﺘﻮن ‪ tkinter‬ﺑﺎ ﺣﺮف ‪ T‬ﺑﺰرگ ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮد وﻟﯽ در ﻧﺴﺨﻪ ی‬
‫‪ 3.3.0‬ﺑﺎ ﺣﺮف ‪ t‬ﮐﻮﭼﮏ ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮد‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ ی ﺑﺎﻻ را ﺑﺎ ﻣﺜﻼ ﻧﺎم ‪ test.pyw‬در ھﺮ ﮐﺠﺎی وﯾﻨﺪوز ذﺧﯿﺮه ﮐﻨﯿﺪ ‪.‬و ﺳﭙﺲ ﺑﺮای اﺟﺮای ﺑﺮﻧﺎﻣﻪ‬
‫دﮐﻤﻪ ی ‪ F5‬را ﻓﺸﺎر دھﯿﺪ در اﯾﻦ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ از ﺷﻤﺎ ﻣﯿﺨﻮاھﯿﺪ ﮐﻪ آﯾﺎ ﻣﯿﺨﻮاھﯿﺪ ذﺧﯿﺮه ﮐﻨﯿﺪ ﺑﺎ‬
‫زدن ‪ ok‬ﭘﻨﺠﺮه ی ﺑﺮﻧﺎﻣﻪ ی ﺷﻤﺎ ﺑﺎز ﻣﯽ ﺷﻮد‪:‬‬

‫ﺑﺮای اﺟﺮای ﺑﺮﻧﺎﻣﻪ ھﻢ ﻣﯽ ﺗﻮاﻧﯿﺪ راﺣﺖ روی ﻓﺎﯾﻞ ‪ test.pyw‬داﺑﻞ ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪ .‬ﺗﺎ اﺟﺮا ﺷﻮد‪.‬‬
‫اﮔﺮ ﺣﺮوف ﺑﮫﻢ رﯾﺨﺘﻪ ﻣﺸﺎھﺪه ﮐﺮدﯾﺪ در ھﻤﯿﻦ ﭘﻨﺠﺮه ی ‪ test.pyw‬ﺑﻪ ﻣﻨﻮی ‪ options‬رﻓﺘﻪ و زﯾﺮ‬
‫ﻣﻨﻮی …‪ Configure IDE‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪ .‬ﺗﺐ ‪ General‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ و در ﻗﺴﻤﺖ‬
‫‪ Default Source Encoding‬ﮔﺰﯾﻨﻪ ی ‪ UTF-8‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ و ‪ ok‬ﮐﻨﯿﺪ‪.‬‬
‫دادن ﻓﻮﻧﺖ و رﻧﮓ و اﻧﺪازه ﺑﻪ ﻣﺘﻦ‪:‬‬
‫* ‪from tkinter import‬‬
‫)(‪root = Tk‬‬
‫‪",fg = "light green",bg = "darkgreen",‬ﺳﯿﺪ ﻣﺤﻤﺪرﺿﺎ ﺣﺴﯿﻨﯿﺎن راوﻧﺪي"=‪Label(root,text‬‬
‫)(‪font = "tahoma 16 bold italic").pack‬‬
‫)(‪root.mainloop‬‬
‫‪ : fg‬ﻣﺨﻔﻒ ‪ foreground‬رﻧﮓ ﻧﻮﺷﺘﻪ‬
‫‪ : bg‬ﻣﺨﻔﻒ ‪ background‬رﻧﮓ زﻣﯿﻨﻪ ی ﻣﺘﻦ‪.‬‬
‫‪tahoma 16 bold italic‬‬
‫ﻧﻮع ﻓﻮﻧﺖ ﺗﺎھﻮﻣﺎ اﻧﺪازه ‪ ١۶‬ﺿﺨﯿﻢ و ﮐﺞ‬
‫ﺑﺮای رﻓﺘﻦ ﻗﺴﻤﺘﯽ از ﻣﺘﻦ ﺑﻪ ﺧﻂ ﺑﻌﺪ ﺑﻪ اﯾﻦ روش ﻋﻤﻞ ﮐﻨﯿﺪ‪:‬‬
‫"ﺧﻂ ﺑﻌﺪ‪\n‬ﻣﺘﻦ"=‪text‬‬
‫ﺗﻌﯿﯿﻦ ﻣﺤﺪودﯾﺖ ﺑﺮای ﻣﺘﻦ‪:‬‬
‫*‪from tkinter import‬‬
‫)(‪root = Tk‬‬
‫)‪T = Text(root, height=2, width=30‬‬
‫)(‪T.pack‬‬
‫)"‪\n‬ﻣﺘﻦ ﺧﻂ دوم ‪\n‬ﻣﺘﻦ ﺧﻂ اول" ‪T.insert(END,‬‬
‫)(‪mainloop‬‬
‫ﯾﮏ ﺻﻔﺤﻪ ﺑﺮای ﻣﺘﻦ اﯾﺠﺎد ﮐﺮدﯾﻢ ﺑﺎ ‪ text‬ﺑﺎ ارﺗﻔﺎع دو)دو ﺧﻂ( ﺑﺎ ﻋﺮض ‪ ٣٠) ٣٠‬ﮐﺎراﮐﺘﺮ(‬
‫ﺑﺎ ‪ insert‬ﻣﻘﺎدﯾﺮ را ﮐﻪ ﺷﺎﻣﻞ ﻣﺘﻦ ﻣﺘﻦ ﺧﻂ اول\‪ n‬ﻣﺘﻦ ﺧﻂ دوم\‪ n‬ھﺴﺖ را وارد ﮐﺮدﯾﻢ‪.‬‬

‫رﻧﮓ زﻣﯿﻨﻪ ی ﭘﻨﺠﺮه‪:‬‬


‫‪import tkinter‬‬
‫* ‪from tkinter import‬‬
‫)(‪root = Tk‬‬
‫)"‪root.geometry("300x200‬‬
‫)"ﻋﻨﻮان"(‪root.title‬‬
‫)'‪root.configure(background='black‬‬
‫)(‪root.mainloop‬‬
:‫روش دﯾﮕﺮ‬
import tkinter
from tkinter import *
root = Tk()
root.geometry("300x200")
root.title("‫)"ﻋﻨﻮان‬
root['background'] = 'green'
root.mainloop()

:‫ﻧﻤﺎﯾﺶ ﺗﺼﻮﯾﺮ‬
from tkinter import *
root = Tk()
logo = PhotoImage(file="ravandi.gif")
explanation = "‫"ﻣﺘﻦ روي ﻋﮑﺲ‬
w = Label(root,compound = CENTER,text=explanation,image=logo).pack(side="right")
root.mainloop()

.‫ ﻋﮑﺲ را ﺑﻪ ﺳﻤﺖ ﭼﭗ ﻣﯽ ﺑﺮد‬Side="left"


‫ ﻣﻮﻗﻌﯿﺖ ﻣﺘﻦ روی ﻋﮑﺲ‬: compound = CENTER
.‫ رو ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯿﮑﻨﺪ‬PPM/PGM ‫ و‬gif ‫ﻓﻘﻂ ﻓﺮﻣﺖ‬
:‫اﮔﺮ ﻋﮑﺲ در ﮐﻨﺎر ﻓﺎﯾﻞ ﺑﺮﻧﺎﻣﻪ ﻧﺒﺎﺷﺪ و در دراﯾﻮ دﯾﮕﺮی ﺑﺎﺷﺪ ﺑﻪ اﯾﻦ ﺷﮑﻞ آدرس دھﯽ ﮐﻨﯿﺪ‬
C:/ravandi/ravand.gif

:‫اﯾﺠﺎد ﻋﮑﺲ و ﻣﺘﻦ‬


from tkinter import *
root = Tk()
logo = PhotoImage(file="ravandi.gif")
w1 = Label(root, image=logo).pack(side="right")
explanation = "‫"اﯾﻦ ﻣﺘﻦ ﺗﺼﻮﯾﺮ اﺳﺖ‬
w2 = Label(root,justify=LEFT,padx = 10,text=explanation).pack(side="left")
root.mainloop()

‫ و ﻋﮑﺲ ﻣﺎ در ﭘﻮﺷﻪ ای دﯾﮕﺮ در‬.‫ ﺑﺎﺷﺪ‬python ‫اﮔﺮ ﻓﺎﯾﻞ ﻣﺎ ﮐﻪ ﮐﺪھﺎی ﺑﺎﻻ در آن اﺳﺖ در ﭘﻮﺷﻪ ی‬
:‫ ﺑﺎﺷﺪ روش آدرس دھﯽ ﻣﺎ ﻣﯿﺘﻮاﻧﺪ اﯾﻨﻄﻮری ﺑﺎﺷﺪ‬image ً‫ھﻤﺎن دراﯾﻮ ﺑﺎ ﻧﺎم ﻣﺜﻼ‬
../image/ravandi.gif
:‫ﯾﺎ اﯾﻨﻄﻮری‬
F:/image/ravandi.gif

‫ ﮐﺎر ﻧﮑﺮد از ﮔﺰﯾﻨﻪ ھﺎﯾﯽ‬v ‫ و‬ctrl ‫ﻧﮑﺘﻪ اﮔﺮ ھﻨﮕﺎم ﮐﺎر ﺑﺎ وﯾﺮاﯾﺸﮕﺮﺗﺎن دﮐﻤﻪ ھﺎی ﺻﻔﺤﻪ ﮐﻠﯿﺪ ﻣﺜﻼ‬
.‫ﮐﻪ در ﻣﻨﻮھﺎی وﯾﺮاﯾﺸﮕﺮ ھﺴﺖ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‬

:‫اﯾﺠﺎد ﺑﺮﭼﺴﺐ و ﺗﮑﺴﺖ‬


from tkinter import *
top = Tk()
Label(top,text=":‫)"ﻧﺎم ﺷﻤﺎ‬.grid(row=0,column=1)
e = Entry(top)
e.grid(row=0,column=0)
top.mainloop()
.‫ ھﻢ ﺑﺮای اﯾﺠﺎد ردﯾﻒ ﺑﮑﺎر ﻣﯿﺮه‬row ‫ ﺑﺮای اﯾﺠﺎد ﺳﺘﻮن و‬column
. ‫ﯾﻌﻨﯽ ﺑﺮﭼﺴﺐ ﻣﺎ در ردﯾﻒ اول و ﺳﺘﻮن دوم ھﺴﺖ‬
.‫و ورودی ﯾﺎ ﺗﮑﺴﺖ ھﻢ در ردﯾﻒ اول و ﺳﺘﻮن اول اﺳﺖ‬
.‫اﯾﻨﺠﺎ ﻣﻘﺪار از ﺻﻔﺮ ﺷﺮوع ﻣﯽ ﺷﻮد‬

:‫اﯾﺠﺎد دﮐﻤﻪ‬
from tkinter import*
root = Tk()
root.title("‫)"ﻋﻨﻮان‬
button =Button(root, text='‫'ﺧﺮوج‬, width=25, command=root.destroy)
button.pack()
root.mainloop()

:‫ﺑﺎ ﮐﻠﯿﮏ روی دﮐﻤﻪ ﺑﺎ ﮐﻤﮏ دﺳﺘﻮر زﯾﺮ ﭘﻨﺠﺮه ﺑﺴﺘﻪ ﻣﯽ ﺷﻮد‬
command=root.destroy

.‫ ﺑﻪ ﻣﻌﻨﺎی از ﺑﯿﻦ ﺑﺮدن اﺳﺖ‬destroy

:‫اﯾﺠﺎد رادﯾﻮ ﺑﺎﺗﻦ‬


from tkinter import*
root = Tk()
#‫ﻣﺘﻐﯿﯿﺮ از ﻧﻮع ﻋﺪد ﺻﺤﯿﺢ‬
v = IntVar()
Label(root,text="‫"ﮐﺪام را اﻧﺘﺨﺎب ﻣﯽ ﮐﻨﯿﺪ؟‬,justify = LEFT,padx = 20).pack()
Radiobutton(root,text="Python",padx = 20, variable=v,value=1).pack(anchor=W)
Radiobutton(root,text="php",padx = 20,variable=v,value=2).pack(anchor=W)
mainloop()
‫اﯾﺠﺎد ﭼﮏ ﺑﺎﮐﺲ‪:‬‬
‫* ‪from tkinter import‬‬
‫)(‪master = Tk‬‬
‫)(‪var1 = IntVar‬‬
‫)‪Checkbutton(master, text="male", variable=var1).grid(row=0, sticky=W‬‬
‫)(‪var2 = IntVar‬‬
‫)‪Checkbutton(master, text="female", variable=var2).grid(row=1, sticky=W‬‬
‫)(‪mainloop‬‬

‫ﻧﻤﺎﯾﺶ ﻣﺘﻦ ورودی ﺗﮑﺴﺖ ﺑﺎ ﮐﻠﯿﮏ روی دﮐﻤﻪ‪:‬‬


‫* ‪from tkinter import‬‬
‫)(‪master = Tk‬‬
‫اﯾﺠﺎد ﺗﺎﺑﻊ‪#‬‬
‫‪def show_entry_fields():‬‬
‫اﯾﺠﺎد ﺑﺮﭼﺴﺐ در ردﯾﻒ دو و ﺳﺘﻮن دو‪#‬‬
‫)‪Label(master, text=e1.get()).grid(row=1, column=1‬‬
‫اﯾﺠﺎد ﺑﺮﭼﺴﺐ در ردﯾﻒ ﯾﮏ‪#‬‬
‫)‪:").grid(row=0‬ﻧﺎم"=‪Label(master, text‬‬
‫اﯾﺠﺎد ورودی ﻣﺘﻦ‪#‬‬
‫)‪e1 = Entry(master‬‬
‫ﻣﺤﻞ ﻗﺮارﮔﯿﺮی ورودی ﻣﺘﻦ در ردﯾﻒ ﯾﮏ و ﺳﺘﻮن دو ‪#‬‬
‫)‪e1.grid(row=0, column=1‬‬
‫دﮐﻤﻪ ای ﮐﻪ ﺑﺎ ﮐﻠﯿﮏ روی اون ﺗﺎﺑﻊ ﻓﻌﺎل ﻣﯽ ﺷﻮد‪#‬‬
‫‪', command=show_entry_fields).grid(row=2, column=1,‬ارﺳﺎل'=‪Button(master, text‬‬
‫)‪sticky=W, pady=4‬‬
‫)(‪mainloop‬‬
‫ﺑﺎ ﮐﻠﯿﮏ روی دﮐﻤﻪ ﺗﺎﺑﻊ ‪ show_entry_fields‬ﻓﺮاﺧﻮاﻧﯽ ﻣﯿﺸﻪ و ﻣﺘﻦ از ﺗﮑﺴﺖ ﺗﻮﺳﻂ دﺳﺘﻮر‬
‫‪ e1.get‬ﮔﺮﻓﺘﻪ ﻣﯿﺸﻪ و ﺑﻪ ﺑﺮﭼﺴﺐ داده ﻣﯿﺸﻪ و در ﺑﺮﭼﺴﺐ ﻧﻤﺎﯾﺶ داده ﻣﯿﺸﻪ‪.‬‬

‫دﮐﻤﻪ ی ﺗﻐﯿﯿﺮ ﻣﺘﻦ و ﺧﺮوج‪ :‬در اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﺗﺎﺑﻌﯽ ﻧﻮﺷﺘﯿﻢ ﮐﻪ ﺑﺎ ﮐﻠﯿﮏ روی دﮐﻤﻪ ﻣﺘﻦ رو‬
‫ﺑﻪ ﻣﺘﻦ دﯾﮕﻪ ﺗﻐﯿﯿﺮ ﺑﺪه و ھﻤﭽﻨﯿﻦ ﺗﺎﺑﻌﯽ ﻧﻮﺷﺘﯿﻢ ﮐﻪ ﺑﺎ ﮐﻠﯿﮏ روی اون ﭘﻨﺠﺮه ﺑﺴﺘﻪ ﺑﺸﻪ‪.‬‬
‫* ‪from tkinter import‬‬
#‫ﺗﺎﺑﻌﯽ ﺑﺮای ﺑﺴﺘﻦ ﭘﻨﺠﺮه‬
def stopProg(e):
#‫ﻣﻘﺪار داﺧﻞ ﺗﺎﺑﻊ‬
root.destroy()
#‫ﺗﺎﺑﻌﯽ ﺑﺮای ﺗﻐﯿﯿﺮ ﻣﺘﻦ‬
def transfertext(e):
label1.configure(text="‫)"ﻣﺘﻦ ﺟﺎﯾﮕﺰﯾﻦ‬
root=Tk()
button1=Button(root,text="‫)"ﺧﺮوج‬
button1.pack()
button1.bind('<Button-1>',stopProg)
button2=Button(root,text="‫)"ﮐﻠﯿﮏ ﮐﻨﯿﺪ‬
button2.pack()
button2.bind('<Button-1>',transfertext)
label1=Label(root,text="‫)"ﻣﺘﻦ اﺻﻠﯽ‬
label1.pack()
root.mainloop()

‫ ﺑﺎ ﻃﺮﯾﻘﻪ ی ﻓﺎﺻﻠﻪ ﮔﺬاﺷﺘﻦ‬.‫ ﻓﺎﺻﻠﻪ ھﻢ ﻣﮫﻢ ھﺴﺖ اﮔﺮ رﻋﺎﯾﺖ ﻧﺸﻪ ﺑﺮﻧﺎﻣﻪ ﮐﺎر ﻧﻤﯿﮑﻨﻪ‬tkinter ‫در‬
‫ ﮐﻨﯿﺪ ﺗﺎ ﮐﺮﺳﺮ درﺳﺖ‬enter ‫ وﻗﺘﯽ ھﺮ ﺧﻂ دﺳﺘﻮری رو ﻣﯽ ﻧﻮﯾﺴﺪ‬.‫در ﺑﺮﻧﺎﻣﻪ ھﺎی ﺑﺎﻻ دﻗﺖ ﮐﻨﯿﺪ‬
.‫ﺳﺮ ﺟﺎی ﺧﻮدش ﻗﺮار ﺑﮕﯿﺮه‬
.‫ ﮐﺸﯿﺪن و اﻧﺪاﺧﺖ‬drog and drop ‫< ﺑﺮای‬Button-1>
.‫< ﺑﺮای داﺑﻞ ﮐﻠﯿﮏ ﮐﺮدن اﺳﺖ‬B1-Motion>
.‫< ﮐﻠﯿﮏ روی دﮐﻤﻪ ی ﺳﻤﺖ ﭼﭗ ﻣﺎوس‬ButtonRelease-1>
.‫< ﺑﺮای داﺑﻞ ﮐﻠﯿﮏ ﮐﺮدن‬Double-Button-1>
.‫ دﮐﻤﻪ ﻋﻤﻞ ﻣﯿﮑﻨﻪ‬،‫< وﻗﺘﯽ اﺷﺎره ﮔﺮ ﻣﺎوس ﻣﯿﺮه روی دﮐﻤﻪ‬Enter>
. ‫< ﺧﺎرج ﺷﺪن ﮐﺮﺳﺮ ﻣﺎوس از روی دﮐﻤﻪ‬Leave>
.‫ ﺗﻐﯿﯿﺮ اﻧﺪازه‬: <Configure>
http://www.i-programmer.info/programming/python/5073-creating-the-python-ui-with-
tkinter.html?start=1

:‫اﯾﺠﺎد ﭘﻨﺠﺮه روی ھﻢ‬


from tkinter import *
root = Tk()
top = Toplevel()
top.mainloop()

:‫ﺳﺎﺧﺖ ﻓﺮم ﺑﺎ اﻧﺪازه ی ﻋﺮض و ارﺗﻔﺎع ﻣﺸﺨﺺ‬


from tkinter import *
root = Tk()
frame = Frame(root, width=500, height=300)
frame.pack()
root.mainloop()
:‫رﻧﮓ زﻣﯿﻨﻪ ﺑﺮای ﻓﺮم‬
from tkinter import *
root = Tk()
# ‫اﻧﺪازه ی ﭘﻨﺠﺮه‬
root.geometry("150x100")
frame = Frame(root, width=50, height=50, bg="blue")
frame.pack()
root.mainloop()
.‫اﮔﺮ دﻗﺖ ﮐﻨﯿﺪ ﻓﻘﻂ ﻣﺤﺪوده ای ﮐﻪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻓﺮم ھﺴﺖ آﺑﯽ ﻣﯽ ﺷﻮد‬

:‫اﯾﺠﺎد دﮐﻤﻪ روی ﻓﺮم‬


from tkinter import*
root = Tk()
#‫اﯾﺠﺎد ﻓﺮم‬
nameform = Frame(root)
#‫ﻧﻤﺎﯾﺶ ﻓﺮم‬
nameform.pack()
#‫اﯾﺠﺎد دﮐﻤﻪ‬
button1 = Button(nameform)
button1["text"]= "‫"!ﻣﺘﻦ روی دﮐﻤﻪ‬
#‫رﻧﮓ زﻣﯿﻨﻪ ی دﮐﻤﻪ ﺳﺒﺰ اﺳﺖ‬
button1["background"] = "green"
#‫ﻧﻤﺎﯾﺶ دﮐﻤﻪ‬
button1.pack()
root.mainloop()

:Listbox
from tkinter import *
master = Tk()
listbox = Listbox(master)
listbox.pack()
listbox.insert(END, "‫)"ﻣﺘﻦ ﺟﺪﻳﺪ‬
for item in ["‫ "ﻣﺘﻦ ﭼﮫﺎرم‬,"‫ "ﻣﺘﻦ ﺳﻮم‬,"‫ "ﻣﺘﻦ دوم‬,"‫]"ﻣﺘﻦ اول‬:
listbox.insert(END, "‫)"ﻣﺘﻦ ﺟﺪﻳﺪ‬
mainloop()

: OptionMenu
from tkinter import *
master = Tk()
variable = StringVar(master)
#‫ﻣﻘﺪار ﭘﯿﺸﻔﺮض‬
variable.set("‫)"ﮔﺰﻳﻨﻪ ي اول‬
#‫ﮐﻞ ﻣﻘﺎدﻳﺮ‬
w = OptionMenu(master, variable, "‫ "ﮔﺰﻳﻨﻪ ي ﺳﻮم‬,"‫ "ﮔﺰﻳﻨﻪ ي دوم‬,"‫)"ﮔﺰﻳﻨﻪ ي اول‬
w.pack()
mainloop()

(int)‫ﺑﺮﻧﺎﻣﻪ ی ﻗﺒﻞ ﺑﺮای رﺷﺘﻪ ﺑﻮد وﻟﯽ اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺮای ﻋﺪد ﺻﺤﯿﺢ اﺳﺖ‬
from tkinter import *
master = Tk()
variable = IntVar(master)
#‫ﻣﻘﺪار ﭘﯿﺸﻔﺮض‬
variable.set(1)
#‫ﮐﻞ ﻣﻘﺎدﻳﺮ‬
w = OptionMenu(master, variable, 1, 2, 3)
w.pack()
mainloop()

: Combobox
from tkinter import Tk, StringVar, ttk
root = Tk()
#‫ﻣﻘﺪار رﺷﺘﻪ ای‬
value = StringVar()
box = ttk.Combobox(root, textvariable=value, state='readonly')
#‫ﻣﻘﺎدﯾﺮ ﺑﻪ ﺻﻮرت آراﯾﻪ‬
box['values'] = ('‫'راوﻧﺪی‬, '‫'ﻣﮫﺪی‬, '‫)'ﺻﺎدق‬
# ‫ﺻﻔﺤﻪ ی ی ﺟﺎری ﯾﺎ ﭘﯿﺸﻔﺮض ﻣﺎ ﺻﻔﺤﻪ ی اول ﺑﺎﺷﺪ‬
#‫ﻣﻘﺎدﯾﺮ آراﯾﻪ ھﻤﯿﺸﻪ از ﺻﻔﺮ ﺷﺮوع ﻣﯽ ﺷﻮد‬
box.current(0)
#‫ﺳﺘﻮن اول و ردﯾﻒ اول‬
box.grid(column=0, row=0)
root.mainloop()
‫ ﺑﺎﺷﺪ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﻪ ﻏﯿﺮ از‬writeonly ‫ در ﺻﻮرﺗﯽ ﮐﻪ‬.‫ وﺿﻌﯿﺖ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﯽ‬state='readonly'
.‫ﺧﻮاﻧﺪن ﺣﺘﯽ داﺧﻞ آن ﻣﺘﻨﺘﺎن را ﺑﻨﻮﯾﺴﯿﺪ‬

:‫اﯾﺠﺎد اﺳﮑﺮول‬
from tkinter import *
root = Tk()
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
mainloop()

:‫اﯾﺠﺎد ﻟﻐﺰﻧﺪه‬
from tkinter import *
master = Tk()
w = Scale(master, from_=0, to=42)
w.pack()
w = Scale(master, from_=0, to=200, orient=HORIZONTAL)
w.pack()
mainloop()
.‫ ﮐﻪ ﺑﺎﻋﺚ ﻣﯿﺸﻪ ﯾﮏ ﻟﻐﺰﻧﺪه ی اﻓﻘﯽ اﯾﺠﺎد ﺑﺸﻪ‬.‫ ﺑﻪ ﻣﻌﻨﺎی اﻓﻘﯽ اﺳﺖ‬HORIZONTAL
.‫ ﻟﻐﺰﻧﺪه از اﯾﻦ ﻗﺴﻤﺖ ﺷﺮوع ﻣﯿﺸﻮد‬:from_=0
.‫ ﺗﺎ اﯾﻨﺠﺎ ﭘﺎﯾﺎن ﻣﯿﺎﺑﺪ‬: To

:‫اﯾﺠﺎد ﻣﻨﻮ و زﯾﺮ ﻣﻨﻮ‬


from tkinter import *
def tabenew():
print ("‫)"ﮔﺰﻳﻨﻪ ي ﺟﺪﻳﺪ اﻧﺘﺨﺎب ﺷﺪ‬
def tabeopen():
print ("‫)"ﮔﺰﻳﻨﻪ ي ﺑﺎز ﮐﺮدن اﻧﺘﺨﺎب ﺷﺪ‬
def tabehelp():
print ("‫)"راھﻨﻤﺎي ﺑﺮﻧﺎﻣﻪ‬
root = Tk()
menu = Menu(root)
root.config(menu=menu)

filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=tabenew)
filemenu.add_command(label="Open...", command=tabeopen)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.destroy)

helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=tabehelp)

mainloop()
‫ﺑﺎ ﮐﻠﯿﮏ روی ھﺮ زﯾﺮ ﻣﻨﻮ ﺗﺎﺑﻊ ﻣﺮﺑﻮط ﺑﻪ آن زﯾﺮ ﻣﻨﻮ ﻓﺮاﺧﻮاﻧﯽ ﺷﺪه و ﻣﺘﻦ ﻣﺘﻌﻠﻖ ﺑﻪ آن در وﯾﺮاﯾﺸﮕﺮ‬
.‫ﻧﻤﺎﯾﺶ داده ﻣﯽ ﺷﻮد‬
http://www.java2s.com

: ‫اﯾﺠﺎد ﺗﺐ‬
import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
# ‫ ﻋﺮض‬x ‫ ارﺗﻔﺎع‬+ ‫ ﻣﺤﻮر اﻓﻘﯽ‬+‫ﻣﺤﻮر ﻋﻤﻮدی‬
root.geometry("%dx%d+%d+%d" % (300, 200, 100, 50))
root.title('‫)'ﻋﻨﻮان‬

nb = ttk.Notebook(root)
nb.pack(fill='both', expand='yes')

#‫اﻳﺠﺎد ﻓﺮم ﺑﺮاي ھﺮ ﺻﻔﺤﻪ‬


f1 = tk.Frame(bg='red')
f2 = tk.Frame(bg='blue')
f3 = tk.Frame(bg='green')

# ‫اﻳﺠﺎد ﺻﻔﺤﺎت‬
nb.add(f1, text='page1')
nb.add(f2, text='page2')
nb.add(f3, text='page3')
‫اﻳﻦ دﮐﻤﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اف ﻳﮏ ﺑﻪ ﺗﺐ اول داده ﻣﻲ ﺷﻮد ‪#‬‬
‫)'‪btn1 = tk.Button(f1, text='button1‬‬
‫)‪btn1.pack(side='left', anchor='nw', padx=50, pady=50‬‬
‫)(‪root.mainloop‬‬
‫‪ : pady =50‬ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﮐﻪ دﮐﻤﻪ از ﺳﻤﺖ ﺑﺎﻻی ﭘﻨﺠﺮه ﻓﺎﺻﻠﻪ ﺑﮕﯿﺮد‪.‬‬
‫‪ : padx=50‬از ﺳﻤﺖ راﺳﺖ ﭘﻨﺠﺮه ﻓﺎﺻﻠﻪ ﻣﯿﮕﯿﺮد‪.‬‬
‫‪ X‬و ‪ y‬ﻣﺨﺘﺼﺎت اﻓﻘﯽ و ﻋﻤﻮدی‪.‬‬
‫'‪ : anchor='nw‬ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﮐﻪ دﮐﻤﻪ در ﻣﺨﺘﺼﺎت ﺻﻔﺮ از ﭘﻨﺠﺮه ﯾﻌﻨﯽ در ﮔﻮﺷﻪ ی ﺑﺎﻻ ﺳﻤﺖ‬
‫ﭼﭗ ﭘﻨﺠﺮه ﻗﺮار ﺑﮕﯿﺮد‪.‬ﯾﻌﻨﯽ ﺷﻤﺎل ﻏﺮﺑﯽ‪.‬‬
‫ﻣﻘﺎدﯾﺮی ﮐﻪ ‪ anchor‬ﻣﯿﮕﯿﺮد‪:‬‬
‫‪ : s‬ﺟﻨﻮب‪.‬‬
‫‪ : n‬ﺷﻤﺎل‪.‬‬
‫‪ : w‬ﻏﺮب‪.‬‬
‫‪ : e‬ﺷﺮق‪.‬‬
‫و ﺷﻤﺎل ﻏﺮﺑﯽ و ﺷﺮﻗﯽ و ﺟﻨﻮب ﻏﺮﺑﯽ و ﺷﺮﻗﯽ ‪.‬‬

‫‪http://forums.devshed.com/python-programming-11/python-tkinter-tabs-708230.html‬‬

‫اﯾﺠﺎد ﺧﻂ‪:‬‬
‫*‪from tkinter import‬‬
‫)(‪master = Tk‬‬
‫)‪w = Canvas(master, width=300, height=200‬‬
‫)(‪w.pack‬‬
‫)‪w.create_line(150, 80, 200, 200, fill="#476042", width=5‬‬
‫)(‪mainloop‬‬
‫‪ : create_line‬ﺧﻂ را ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺨﺘﺼﺎت داده ﺷﺪه اﯾﺠﺎد ﻣﯿﮑﻨﺪ‪.‬‬
‫‪ :fill="#476042‬ﺧﻂ ﺑﺎ اﯾﻦ رﻧﮓ ﭘﺮ ﺷﻮد‪.‬‬
‫‪ : width=5‬ﺿﺨﺎﻣﺖ ﺧﻂ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬

‫اﯾﺠﺎد ﻣﺴﺘﻄﯿﻞ‪:‬‬
‫* ‪from tkinter import‬‬
‫)(‪master = Tk‬‬
‫)‪w = Canvas(master, width=200, height=100‬‬
‫)(‪w.pack‬‬
‫)"‪w.create_rectangle(50, 20, 150, 80, fill="#9e28f1‬‬
‫)(‪mainloop‬‬

‫‪ : create_rectangle‬ﺑﺮای اﯾﺠﺎد ﻣﺴﺘﻄﯿﻞ ‪.‬‬


‫‪ : fill‬ﺑﻪ ﻣﻌﻨﺎی ﭘﺮ ﮐﺮدن و ﺗﻮﭘﺮ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪ : #9e28f1‬ﮐﺪ رﻧﮓ ھﮕﺰاد دﺳﯿﻤﺎل اﺳﺖ ﮐﻪ اﯾﻦ ﮐﺪ ﺑﺮای رﻧﮓ آﺑﯽ اﺳﺖ‪.‬‬
‫ﺑﺮای اﯾﻨﮑﻪ رﻧﮓ ھﺎی ﺑﯿﺸﺘﺮی اﻧﺘﺨﺎب ﮐﻨﯿﺪ از ﻓﺘﻮﺷﺎپ اﺳﺘﻔﺎده ﮐﻨﯿﺪ ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ ی ﻓﺘﻮﺷﺎپ را ﺑﺎز ﮐﻨﯿﺪ و ﺑﻪ ﻗﺴﻤﺖ اﺑﺰار ﻓﺘﻮﺷﺎپ رﻓﺘﻪ در ﭘﺎﯾﯿﻦ اﯾﻦ ﻗﺴﻤﺖ روی ﺗﺼﻮﯾﺮ زﯾﺮ‬
‫ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪:‬‬
‫ﺣﺘﯽ ﻣﯽ ﺗﻮﻧﯿﺪ رﻧﮓ ﯾﮏ ﻋﮑﺲ رو ھﻢ ﺑﮕﯿﺮﯾﺪ ﮐﺎﻓﯿﻪ اﺑﺰار ‪ Eyedropper Tool‬رو اﻧﺘﺨﺎب ﮐﻨﯿﺪ و روی‬
‫ﻋﮑﺲ ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﺑﻌﺪ دوﺑﺎره ﻣﺜﻞ ﻗﺒﻞ و ﻃﺒﻖ ﺗﺼﻮﯾﺮ ﺑﺎﻻ ﻋﻤﻞ ﮐﻨﯿﺪ ﺗﺎ رﻧﮓ ﺗﺼﻮﯾﺮ را ﺑﮕﯿﺮﯾﺪ‪.‬‬

‫اﯾﺠﺎد داﯾﺮه ‪:‬‬


‫* ‪from tkinter import‬‬
‫)(‪master = Tk‬‬
‫)‪w = Canvas(master, width=150, height=150‬‬
‫)(‪w.pack‬‬
‫)"‪w.create_oval(50,50,100,100 ,fill="#9e28f1‬‬
‫)(‪mainloop‬‬
‫‪ oval‬ﺑﻪ ﻣﻌﻨﺎی ﺑﯿﻀﯽ‪ .‬ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺎ دادن اﻧﺪازه ﺑﻪ آن ﯾﮏ داﯾﺮه ھﻢ اﯾﺠﺎد ﮐﻨﯿﻢ‪.‬‬

‫اﯾﺠﺎد ﭼﻨﺪ ﺿﻠﻌﯽ‪:‬‬


‫* ‪from tkinter import‬‬
‫)(‪master = Tk‬‬
‫)‪w = Canvas(master, width=210, height=170‬‬
‫)(‪w.pack‬‬
‫])‪points = [(20, 20), (50, 150), (200, 50‬‬
‫)‪w.create_polygon(fill="blue", *points‬‬
‫)(‪root.mainloop‬‬
‫ﺑﺮای دادن ﻣﺨﺘﺼﺎت ﻧﻘﺎط ‪ x‬و ‪ y‬ﺷﺮوع و ﭘﺎﯾﺎن ﺧﻄﻮط از روش زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد و ﺑﻪ ‪points‬‬
‫داده ﻣﯽ ﺷﻮد‪:‬‬
‫]‪[(x1, y1), (x2, y2), (x3, y3),......‬‬
‫اﯾﻨﮑﻪ ﭼﻨﺪ ﻧﻘﻄﻪ ﮔﺬاﺷﺘﻢ‪ ،‬ﺧﻮاﺳﺘﻢ ﺑﮕﻢ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﻧﻘﺎط ‪ x‬و ‪ y‬ﺑﯿﺸﺘﺮی داﺷﺘﻪ ﺑﺎﺷﯿﺪ ‪.‬‬
‫ﻣﺜﻼ ﺑﺮای ﺳﺎﺧﺖ ﺳﺘﺎره ﺑﺎﯾﺪ از ‪ x4,y4‬و ﺑﯿﺸﺘﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪.‬‬
‫ﺑﺎ روش ﺑﺎﻻ ﻣﺎ ﯾﮏ ﻣﺜﻠﺚ اﯾﺠﺎد ﮐﺮدﯾﻢ‪..‬‬

‫ﺷﯽ ﮔﺮاﯾﯽ‪:‬‬
‫ﻓﻠﺴﻔﻪ ای ﮐﻪ ﻣﻨﺠﺮ ﺑﻪ ﺷﮑﻞ ﮔﯿﺮی زﺑﺎن ھﺎی ﺷﯽ ﮔﺮا ﺷﺪ‪ ،‬ﻋﺒﺎرت ﺑﻮد از اﯾﻦ واﻗﻌﯿﺖ ﮐﻪ ﻧﺤﻮه ی‬
‫ﻋﻤﻠﮑﺮد ﻣﻐﺰ و ﺷﯿﻮه ی درﯾﺎﻓﺖ اﻃﻼﻋﺎت از ﻣﺤﯿﻂ ﭘﯿﺮاﻣﻮن و ﭘﺮدازش آن اﻃﻼﻋﺎت)اﻧﺪﯾﺸﯿﺪن(‪ ،‬ﺷﯿﻮه‬
‫ای ﺷﯽ ﮔﺮاﺳﺖ از ھﻤﯿﻦ رو ﻣﯽ ﺑﺎﯾﺴﺘﯽ زﺑﺎﻧﯽ ﺗﻌﺮﯾﻒ ﻣﯽ ﺷﺪ ﮐﻪ ھﻤﯿﻦ ﺷﯿﻮه را ﻣﺒﻨﺎی ﮐﺎر‬
‫ﺧﻮد ﻗﺮار داده و دﻗﯿﻘﺎ ﺑﻪ ھﻤﺎن ﺷﮑﻞ ﮐﻪ اﺷﯿﺎ در ﺟﮫﺎن ﺧﺎرج‪ ،‬دارای ھﻮﯾﺖ و ﮐﺎرﮐﺮد ﻣﺸﺨﺺ و‬
‫ﯾﮕﺎﻧﻪ ﺑﺮای ﺧﻮد ھﺴﺘﻨﺪ و در ﻋﯿﻦ ﺣﺎل ﺑﺎ دﯾﮕﺮ اﺷﯿﺎ در ارﺗﺒﺎﻃﯽ ﺗﻨﮕﺎﺗﻨﮓ و ﻣﺴﺘﻘﯿﻢ اﻧﺪ‪ ،‬در زﺑﺎن‬
‫ھﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻧﯿﺰ ﻣﯽ ﺑﺎﯾﺴﺘﯽ اﯾﻦ اﺻﻮل ﮐﻠﯽ ﺑﺮﻗﺮار ﻣﯽ ﺷﺪ ﺗﺎ ﺑﻪ اﯾﻦ ﺷﮑﻞ‪ ،‬ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ‬
‫ﺑﺘﻮاﻧﺪ ﺑﺎ ﺑﮫﺮه ﮔﯿﺮی از زﺑﺎﻧﯽ ﮐﻪ ﺑﻪ روش اﻧﺪﯾﺸﯿﺪﻧﺶ‪ ،‬ﻧﺰدﯾﮑﯽ ﺑﯿﺸﺘﺮی دارد‪ ،‬ﺷﯽ ھﺎی ﻣﺨﺘﻠﻔﯽ‬
‫را ﺗﻌﺮﯾﻒ ﻧﻤﻮده‪ ،‬اﯾﻦ ﺷﯽ ھﺎ را در ارﺗﺒﺎط ﺑﺎ ﯾﮑﺪﯾﮕﺮ ﻗﺮار داده و از ﺷﯽ ھﺎی ﭘﻮﯾﺎی ﺗﻮﻟﯿﺪ ﺷﺪه ﺑﺮای‬
‫ﺣﻞ ﻣﺴﺎﻟﻪ ی ﭘﯿﺶ روی اﺳﺘﻔﺎده ﻧﻤﺎﯾﺪ‪.‬‬
‫از دﯾﮕﺮ وﯾﮋﮔﯽ ھﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﯽ ﮔﺮا‪ ،‬ﭘﯿﭽﯿﺪﮔﯽ ﮐﻢ‪ ،‬ھﺰﯾﻨﻪ ی ﮐﻢ‪ ،‬اﻣﮑﺎن ﮔﺴﺘﺮش ﺳﺮﯾﻊ‬
‫ﺑﺮﻧﺎﻣﻪ ﺑﺎ ﺧﻄﺎی ﮐﻤﺘﺮ ﻧﺴﺒﺖ ﺑﻪ ﺳﺎﯾﺮ ﭘﺎرادﯾﺎم ھﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ اﺳﺖ‪.‬‬

‫ﺳﻪ ھﺪف اﺻﻠﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﺒﺘﻨﯽ ﺑﺮ اﺷﯿﺎء‪:‬‬

‫‪(١‬ﻏﻠﺒﻪ ﺑﺮ ﭘﯿﭽﯿﺪﮔﯽ‬
‫‪(٢‬ﻣﺪﯾﺮﯾﺖ ﺗﻐﯿﯿﺮ‬
‫‪ (٣‬ﻗﺎﺑﻠﯿﺖ اﺳﺘﻔﺎده ﻣﺠﺪد‪.‬‬

‫ﮐﻼس ‪:‬‬
‫ﮐﻼس ﻧﻮع ﺧﺎﺻﯽ از آراﯾﻪ اﺳﺖ ﮐﻪ اﻣﮑﺎن ذﺧﯿﺮه و ﺟﻤﻊ ﺑﻨﺪی ﺗﻌﺪاد زﯾﺎدی اﻟﻤﺎن را )ﮐﻪ ﺷﺎﻣﻞ داده‬
‫ھﺎ و ﺗﻮاﺑﻊ ھﺴﺘﻨﺪ( ﺑﺮای ﯾﮏ ﺷﯽ ﺟﺪﯾﺪ ﻓﺮاھﻢ آورده و ﺗﺤﺖ ﯾﮏ ﻧﺎم ﻣﺸﺘﺮک ذﺧﯿﺮه ﻣﯽ ﮐﻨﺪ‪ .‬اﻣﺎ ﺑﺮ‬
‫ﺧﻼف آراﯾﻪ ﮐﻪ ﺗﻨﮫﺎ ﻗﺎدر ﺑﻪ ذﺧﯿﺮه ی داده ھﺎﯾﯽ ھﻢ ﺟﻨﺲ اﺳﺖ‪ ،‬ﮐﻼس ﻣﯽ ﺗﻮاﻧﺪ داده ھﺎﯾﯽ از‬
‫ﺟﻨﺲ ھﺎی ﻣﺨﺘﻠﻒ را ذﺧﯿﺮه ﻧﻤﺎﯾﺪ‪.‬‬
‫ﻣﻨﺒﻊ ‪ :‬وﯾﮑﯽ ﭘﺪﯾﺎ‪.‬‬
‫‪#cite_note-3‬ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ_ﺷﺊﮔﺮا‪http://fa.wikipedia.org/wiki/‬‬

‫ﻣﯽ ﺗﻮاﻧﯿﻢ ﮐﺪی رو ﭼﻨﺪ ﺑﺎر در ﭼﻨﺪ ﻗﺴﻤﺖ ﺑﻪ ﮐﺎر ﺑﺒﺮﯾﻢ ‪ .‬ﻣﺜﻼ ﯾﮏ ﺧﺼﻮﺻﯿﺖ رو در ﭼﻨﺪ ﻗﺴﻤﺖ‬
‫اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﻼ ﺑﺮای دادن ﺧﺼﻮﺻﯿﺖ ﺑﻪ دﮐﻤﻪ ‪:‬‬
‫* ‪from tkinter import‬‬
‫‪class dokme:‬‬
‫‪def __init__(self, master):‬‬
‫)‪fm = Frame(master‬‬
‫)‪Button(fm, text='Left').pack(side=TOP‬‬
‫)‪Button(fm, text='Center').pack(side=LEFT‬‬
‫)‪Button(fm, text='Right').pack(side=LEFT‬‬
‫)(‪fm.pack‬‬

‫)(‪root = Tk‬‬
‫))'‪root.option_add('*font', ('verdana', 12, 'bold‬‬
‫)"‪root.title("oop‬‬
‫)‪display = dokme(root‬‬
‫)(‪root.mainloop‬‬
‫در ﻣﺜﺎل ﺑﺎﻻ ﯾﮏ ﺳﺮی ﺧﺼﻮﺻﯿﺎت رو دادﯾﻢ ﺑﻪ ﻓﻮﻧﺖ ھﻤﻪ ی دﮐﻤﻪ ھﺎ‪ .‬ﺑﺪون اﯾﻨﮑﻪ ﻣﺠﺒﻮر ﺑﺸﯿﻢ ﺑﻪ‬
‫ﺗﮏ ﺗﮏ دﮐﻤﻪ ھﺎ ﺧﺼﻮﺻﯿﺖ ﺑﺪﯾﻢ‪.‬‬

‫ﯾﮏ ﻣﺜﺎل ﺳﺎده ﺑﺪون ﺷﯽ ﮔﺮاﯾﯽ‪:‬‬


‫* ‪from tkinter import‬‬
‫)(‪root = Tk‬‬
‫)‪frame = Frame(root‬‬
‫)(‪frame.pack‬‬
‫)‪bottomframe = Frame(root‬‬
‫) ‪bottomframe.pack( side = BOTTOM‬‬

‫)"‪redbutton = Button(frame,font = "Verdana 10 bold", text="left", fg="red‬‬


‫)‪redbutton.pack( side = LEFT‬‬

‫)"‪bluebutton = Button(frame,font = "Verdana 10 bold", text="right", fg="blue‬‬


‫) ‪bluebutton.pack( side = LEFT‬‬

‫‪blackbutton = Button(bottomframe,font = "Verdana 10 bold", text="Center",‬‬


‫)"‪fg="black‬‬
‫)‪blackbutton.pack( side = BOTTOM‬‬

‫)(‪root.mainloop‬‬

‫ﺑﺎﻧﮏ اﻃﻼﻋﺎﺗﯽ‪:‬‬
‫ﻣﯿﺨﻮاھﯿﻢ ﻣﻘﺎدﯾﺮ ﻣﺘﻦ را داﺧﻞ ﯾﮏ ﺟﺪول در ﺑﺎﻧﮏ اﻃﻼﻋﺎﺗﯽ ذﺧﯿﺮه ﮐﻨﯿﻢ ﺑﺮای اﯾﻨﮑﺎر از ﺑﺎﻧﮏ‬
‫اﻃﻼﻋﺎﺗﯽ ‪ SQLite‬اﺳﺘﻔﺎده ﻣﯿﮑﻨﯿﻢ‪ .‬ﺑﺮﻧﺎﻣﻪ ی ‪ SQLite Manager 0.7.7‬ﮐﻪ از ‪ Extensions‬ھﺎی‬
‫ﻓﺎﯾﺮﻓﺎﮐﺲ ھﺴﺖ ﺧﯿﻠﯽ ﮐﺎر ﻣﺎ را در ﮐﺎر ﺑﺎ ﺑﺎﻧﮏ اﻃﻼﻋﺎﺗﯽ راﺣﺖ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﺮای داﻧﻠﻮد اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﺑﻪ‬
‫آدرس زﯾﺮ ﺑﺮوﯾﺪ‪:‬‬
‫‪https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/‬‬
‫ﺑﻌﺪ از داﻧﻠﻮد ‪ ،‬ﻣﺮورﮔﺮ ﻓﺎﯾﺮﻓﺎﮐﺲ را ﺑﺎز ﮐﻨﯿﺪ و ﺑﻪ ﻣﻨﻮی ‪ Tools‬و ﺳﭙﺲ ‪ Add ons‬رﻓﺘﻪ و ﮔﺰﯾﻨﻪ ی‬
‫‪ Extensions‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪ .‬و ﻃﺒﻖ ﺗﺼﻮﯾﺮ زﯾﺮ ﺑﺎ اﺳﺘﻔﺎده از ﮔﺰﯾﻨﻪ ی ‪Install Add-on From file‬‬
‫ﺑﺮﻧﺎﻣﻪ ی ‪ SQLite Manager 0.7.7‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ و ﻧﺼﺐ ﮐﻨﯿﺪ‪.‬‬

‫ﺑﻌﺪ ﺑﺮای اﻧﺘﺨﺎب اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻣﻨﻮی ‪ Tools‬رﻓﺘﻪ و ﮔﺰﯾﻨﻪ ی ‪ SQLite Manager‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪.‬‬
‫ﺑﺮای اﯾﺠﺎد دﯾﺘﺎﺑﯿﺲ ﺑﻪ ﻣﻨﻮی ‪ Database‬و ﺳﭙﺲ ‪ New Database‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪.‬‬
‫ﻧﺎم دﯾﺘﺎﺑﯿﺲ را ﻣﺜﻼ ‪ ravandi‬وارد ﮐﻨﯿﺪ و ‪ ok‬ﮐﻨﯿﺪ‪ .‬ﺑﺮﻧﺎﻣﻪ از ﺷﻤﺎ ﺧﻮاھﺪ ﺧﻮاﺳﺖ ﮐﻪ ﻓﺎﯾﻞ را در‬
‫ﺟﺎﯾﯽ ذﺧﯿﺮه ﮐﻨﯿﺪ ﻣﺎ در آدرس زﯾﺮ ﻓﺎﯾﻞ را ذﺧﯿﺮه ﮐﺮدﯾﻢ‪:‬‬
‫‪F:/sql/ravandi.sqlite‬‬
‫ﺷﻤﺎ ھﻢ ھﺮ ﺟﺎﯾﯽ دوﺳﺖ داﺷﺘﯿﺪ ذﺧﯿﺮه ﮐﻨﯿﺪ وﻟﯽ ﺑﻌﺪاً ﺑﺎﯾﺪ در ﺑﺮﻧﺎﻣﻪ درﺳﺖ آدرس دھﯽ ﮐﻨﯿﺪ‪.‬‬
‫ﺑﻌﺪ در ﺳﻤﺖ ﭼﭗ روی ‪ Tables‬راﺳﺖ ﮐﻠﯿﮏ ﮐﺮده و ﮔﺰﯾﻨﻪ ی ‪ create table‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪ .‬در‬
‫ﭘﻨﺠﺮه ی ﺑﺎز ﺷﺪه و در ﻗﺴﻤﺖ ‪Table Name‬ﻧﺎم ﺟﺪول را ﻣﺜﻼً ‪ tkinter‬وارد ﮐﻨﯿﺪ‪.‬‬
‫ﺣﺎﻻ ﻣﯿﺨﻮاھﯿﻢ ﺳﻪ ﻓﯿﻠﺪ ﺑﺴﺎزﯾﻢ‪ .‬در ﻗﺴﻤﺖ ‪ Column Name‬اوﻟﯿﻦ ﻓﯿﻠﺪ را ﺑﺎ ﻧﺎم ‪ id‬ﻣﯽ ﻧﻮﯾﺴﯿﻢ‪.‬‬
‫ﮐﻪ ﺷﻤﺎره ی رﮐﻮرد را ﺛﺒﺖ ﻣﯿﮑﻨﺪ‪ .‬از ﻧﻮع )‪) integer (Data Type‬ﻋﺪد ﺻﺤﯿﺢ( ﯾﻌﻨﯽ ﻓﻘﻂ ﻣﻘﺪار‬
‫ﻋﺪد ﺑﻪ اﯾﻦ ﻓﯿﻠﺪ وارد ﺷﻮد‪.‬‬
‫‪ Primary key‬را ‪ Yes‬ﻣﯽ ﮐﻨﯿﻢ ﮐﻪ ﻓﯿﻠﺪ اﺻﻠﯽ ﻣﺎ ﺑﺎﺷﺪ‪ .‬ﺑﻌﺪ ﮔﺰﯾﻨﻪ ی ‪ Autoinc‬را ھﻢ اﻧﺘﺨﺎب ﻣﯽ‬
‫ﮐﻨﯿﻢ ﮐﻪ ﺷﻤﺎره ی ھﺮ رﮐﻮرد ﭘﺸﺖ ﺳﺮ ھﻢ ﺑﺎ اﯾﺠﺎد ھﺮ رﮐﻮرد اﯾﺠﺎد ﺑﺸﻪ‪ .‬ﻓﯿﻠﺪ ﺑﻌﺪیﺑﺎ ﻧﺎم ﻣﺜﻼً‬
‫‪ name‬از ﻧﻮع ‪ varchar‬و ﺗﯿﮏ ‪ Allow Null‬را ﺑﺮ ﻣﯿﺪارﯾﻢ ﯾﻌﻨﯽ ﻧﻤﯽ ﺧﻮاھﯿﻢ ﺧﺎﻟﯽ ﺑﺎﺷﺪ‪ .‬ﻓﯿﻠﺪ ﺑﻌﺪی‬
‫ھﻢ ‪ lastname‬از ﻧﻮع ‪ varchar‬و ﺗﯿﮏ ‪ Allow Null‬را ھﻢ ﺑﺮ ﻣﯿﺪارﯾﻢ‪ .‬اﻟﺒﺘﻪ اﮔﺮ ‪ Null‬ﺑﺎﺷﺪ در ﺣﺎﻟﺖ‬
‫ﭘﯿﺸﻔﺮض ‪ Null‬اﺳﺖ‪ .‬ﯾﻌﻨﯽ ﺧﺎﻟﯽ اﺳﺖ و اﮔﺮ ﻓﻌﺎل ھﻢ ﺑﺎﺷﺪ ﻣﺸﮑﻠﯽ ﻧﯿﺴﺖ‪.‬‬

‫ﺣﺎﻻ وﻗﺘﯽ روی ﻋﻼﻣﺖ ﺑﻌﻼوه ی ‪ Table‬ﮐﻠﯿﮏ ﻣﯿﮑﻨﯿﺪ ﻧﺎم ﺟﺪول را ﻣﯽ ﺑﯿﻨﯿﺪ ﮐﻪ ﺑﺎ ﮐﻠﯿﮏ راﺳﺖ‬
‫روی آن و زدن ﮔﺰﯾﻨﻪ ی ‪ Drop table‬ﻣﯽ ﺗﻮاﻧﯿﺪ ﺟﺪول را ﭘﺎک ﮐﻨﯿﺪ‪.‬‬
‫ﺑﺮای وارد ﮐﺮدن ﯾﮏ ﻣﺘﻦ ﺑﻪ داﺧﻞ ﺟﺪول از روش زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ ‪:‬‬
‫‪import sqlite3‬‬
‫اﺗﺼﺎل ﺑﻪ ﺑﺎﻧﮏ اﻃﻼﻋﺎﺗﯽ‪#‬‬
‫)'‪conn = sqlite3.connect('F:/sql/ravandi.sqlite‬‬
‫)(‪c = conn.cursor‬‬
‫وارد ﮐﺮدن ﯾﮏ رﮐﻮرد ﺑﻪ ﺟﺪول ‪#‬‬
‫)""")'ﻣﺤﻤﺪرﺿﺎ'‪' ,‬ﺣﺴﯿﻨﯿﺎن راوﻧﺪي'( ‪c.execute("""insert into tkinter (name,lastname) values‬‬
‫اﯾﻦ دﺳﺘﻮر ﺑﺮای ﻣﻄﻤﺌﻦ ﺷﺪن از ارﺳﺎل ﻣﻘﺎدﯾﺮ اﺳﺖ‪#‬‬
‫)(‪conn.commit‬‬
‫ﺑﺴﺘﻦ اﺗﺼﺎل ﺑﻪ دﯾﺘﺎﺑﯿﺲ‪#‬‬
‫)(‪conn.close‬‬
‫رﮐﻮرد اﯾﻨﺠﺎ ﻣﻨﻈﻮر اون ﻣﻘﺎدﯾﺮی اﺳﺖ ﮐﻪ ﺑﺎ ھﺮ ﺑﺎر اﺟﺮای ﺑﺮﻧﺎﻣﻪ وارد ﺟﺪول ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﯾﻌﻨﯽ ھﺮ ﺑﺎر‬
‫ﻣﻘﺪاری ﮐﻪ ارﺳﺎل ﻣﯿﮑﻨﯿﻢ ﺛﺒﺖ ﻣﯽ ﺷﻮد‪ .‬و ﻣﯽ ﺷﻮد ﯾﮏ رﮐﻮرد‪.‬‬
‫ﺣﺎﻻ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﻪ ﺟﺎی ﻣﻘﺎدﯾﺮ ﻣﺤﻤﺪرﺿﺎ و ﺣﺴﯿﻨﯿﺎن راوﻧﺪی ﻣﻘﺎدﯾﺮ دﯾﮕﺮی را ﻗﺮار ﺑﺪھﯿﺪ ‪ .‬و وﻓﺘﯽ‬
‫دﮐﻤﻪ ی ‪ F5‬را ﻣﯽ زﻧﯿﺪ ﯾﮏ ﻣﻘﺪار ﺟﺪﯾﺪ ﺑﻪ ﺟﺪول اﺿﺎﻓﻪ ﻣﯽ ﺷﻮد و ﺷﻤﺎره ی رﮐﻮرد ﯾﻌﻨﯽ ﺷﻤﺎره‬
‫ی ﻓﯿﻠﺪ ‪ id‬ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر ﯾﮏ ﻋﺪد اﺿﺎﻓﻪ ﻣﯽ ﺷﻮد‪ .‬ﭼﻮن ﺗﯿﮏ ﮔﺰﯾﻨﻪ ی ‪ Autoinc‬را زدﯾﻢ‪.‬‬
‫ﺑﺮای دﯾﺪن رﮐﻮردھﺎی ﺛﺒﺖ ﺷﺪه در ﺑﺮﻧﺎﻣﻪ ی ‪ ، SQlite Manager‬اول ﺟﺪول ﻣﻮرد ﻧﻈﺮ ﯾﻌﻨﯽ‪tkinter‬‬
‫را در ﺳﻤﺖ ﭼﭗ اﻧﺘﺨﺎب ﮐﻨﯿﺪ ﺑﻌﺪ در ﺳﻤﺖ راﺳﺖ روی ﺗﺐ ‪ Browse & Search‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ و ﺑﺮای‬
‫دﯾﺪن رﮐﻮرد ھﺎی ﺛﺒﺖ ﺷﺪه روی دﮐﻤﻪ ی ‪ Search‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪ .‬ﻣﻘﺎدﯾﺮ ﺛﺒﺖ ﺷﺪه در ﺟﺪول را‬
‫ﻣﺸﺎھﺪه ﻣﯽ ﮐﻨﯿﺪ‪.‬‬

‫وارد ﮐﺮدن ﻣﺘﻦ ﺑﻪ ﺟﺪول ﺑﺎ ﮐﻤﮏ ﻓﺮم‪:‬‬


‫ﻣﻨﺒﻊ‪<< :‬‬
‫‪http://bytes.com/topic/python/answers/901064-help-combining-tkinter-mysql‬‬

‫* ‪from tkinter import‬‬


‫‪import sqlite3‬‬
‫)'‪conn = sqlite3.connect('F:/sql/ravandi.sqlite‬‬
‫)( ‪cursor = conn.cursor‬‬
‫‪def SaveData():‬‬
‫)(‪f = a.get‬‬
‫)(‪g = b.get‬‬
cursor.execute ("""INSERT INTO tkinter (name, lastname) VALUES("%s", "%s")"""%
(f,g))
conn.commit()
conn.close()
root = Tk()
ent_frame = Frame(root)
Label(ent_frame, text="FIRST NAME:").pack(side=LEFT)
a = Entry(ent_frame, width=15)
a.pack(side=LEFT)
Label(ent_frame, text="LAST NAME:").pack(side=LEFT)
b = Entry(ent_frame, width=15)
b.pack(side=LEFT)
ent_frame.pack()
Button(root, text="Save",command=SaveData).pack(side=BOTTOM)
mainloop()

>>
‫ ﻣﯿﮕﯿﺮه و ﻣﯿﺪه‬get() ‫ ﺑﺎ ﮐﻠﯿﮏ روی دﮐﻤﻪ ﺗﺎﺑﻊ ﻓﺮاﺧﻮاﻧﯽ ﻣﯿﺸﻪ و ﻣﻘﺎدﯾﺮ رو از ورودی ھﺎ ﺑﺎ‬:‫ﺗﻮﺿﯿﺤﺎت‬
.‫ و اوﻧﻢ وارد ﺟﺪول ﻣﯿﮑﻨﻪ‬insert ‫ﺑﻪ ﺧﻂ‬

:‫ﻧﻤﺎﯾﺶ رﮐﻮردھﺎی ﺛﺒﺖ ﺷﺪه‬


import sqlite3
connection = sqlite3.connect('F:/sql/ravandi.sqlite')
cursor = connection.cursor()
#‫اﻧﺘﺨﺎب ھﻤﻪ ی رﮐﻮردھﺎی ﺟﺪول ﺑﺮای ﻧﻤﺎﯾﺶ‬
cursor.execute('SELECT * FROM tkinter')
for row in cursor:
print (row[0], row[1], row[2])
connection.commit()
connection.close()
‫ اﮔﺮ ﻣﯿﺨﻮاھﯿﺪ ﻓﻘﻂ ﻣﻘﺎدﯾﺮ ﯾﮏ ﻓﯿﻠﺪ ﻧﻤﺎﯾﺶ داده ﺷﻮد ﻓﻘﻂ‬.‫ﻋﻼﻣﺖ ﺳﺘﺎره * ﺑﺮای ﺗﻤﺎم رﮐﻮردھﺎﺳﺖ‬
‫ اﯾﺠﺎد ﻣﯽ ﺷﻮد و ﻣﻘﺎدﯾﺮ رﮐﻮردھﺎی‬for ‫ در ﺳﻄﺮ ﺑﻌﺪی ﯾﮏ ﺣﻠﻘﻪ ی‬.‫ﻧﺎم ھﻤﺎن ﻓﯿﻠﺪ را ﺑﻨﻮﯾﺴﯿﺪ‬
.‫داﺧﻞ ﺟﺪول ﭘﺸﺖ ﺳﺮ ھﻢ ﭼﺎپ ﻣﯽ ﺷﻮد‬
print (row[0], row[1], row[2])
‫ داده ﺷﺪه را ﻧﻤﺎﯾﺶ‬lastname ‫ و‬name ‫ﺧﻂ ﺑﺎﻻ ﺷﻤﺎره ھﺎی رﮐﻮرد ھﺎ و ﻣﻘﺎدﯾﺮی ﮐﻪ ﺑﻪ ﻓﯿﻠﺪھﺎی‬
.‫ﻣﯽ دھﺪ‬

:‫ﺣﺎﻻ ﺑﺮﻧﺎﻣﻪ ای ﻣﯽ ﻧﻮﯾﺴﯿﻢ ﮐﻪ ﻣﻘﺎدﯾﺮ ﯾﮏ ﻓﯿﻠﺪ از ﺟﺪول را روی ﺑﺮﭼﺴﺐ ﻧﻤﺎﯾﺶ دھﺪ‬
from tkinter import *
import sqlite3
connection = sqlite3.connect('F:/sql/ravandi.sqlite')
cursor = connection.cursor()
cursor.execute('SELECT * FROM tkinter')
root = Tk()
namefram= Frame(root)
for row in cursor:
mname=row[1]
Label(namefram, text=mname).pack()
connection.commit()
connection.close()
namefram.pack()
mainloop()
‫ و اﯾﻦ ﻣﺘﻐﯿﯿﺮ را‬mname ‫( را دادﯾﻢ ﺑﻪ ﻣﺘﻐﯿﯿﺮ‬name ‫ )ﮐﻪ ﻣﯿﺸﻪ ﻣﻘﺎدﯾﺮ ﻓﯿﻠﺪ‬row[1] ‫اﻣﺪﯾﻢ ﻣﻘﺎدﯾﺮ‬
.‫دادﯾﻢ ﺑﻪ ﺑﺮﭼﺴﺐ ﺗﺎ ﻧﻤﺎﯾﺶ داده ﺑﺸﻪ‬
:‫ ﺑﻪ اﯾﻦ آدرس ﺑﺮوﯾﺪ‬sql ‫ﺑﺮای دﯾﺪن ﺑﻘﯿﻪ ی دﺳﺘﻮرات‬
http://www.w3schools.com/sql/

‫اﮔﺮ ﮐﺘﺎب دﯾﮕﺮی ﺑﻨﻮﯾﺴﻢ ﯾﺎ ﺑﺨﻮام در ﻣﻮرد ﻣﻄﺎﻟﺐ اﯾﻦ ﮐﺘﺎب ﻣﻄﻠﺒﯽ ﺑﻨﻮﯾﺴﻢ و ﯾﺎ اﺻﻼﺣﯽ اﻧﺠﺎم‬
:‫ﺑﺪم در آدرس ﺧﻮراک ﺧﻮان ﺳﺎﯾﺘﻢ ﺑﻪ آدرس زﯾﺮ اﻃﻼع ﻣﯿﺪم‬
http://pachenar.ir/rss-learn.php

:‫ﻣﻨﺎﺑﻊ‬
http://www.ferg.org
http://www.i-programmer.info
http://www.python-course.eu
http://www.ferg.org
http://www.tutorialspoint.com
http://stackoverflow.com
http://docs.python.org

You might also like