آموزش ساخت دفترچه تلفن در پایتون :: V i R u s Ʒ²

V i R u s Ʒ²

هک و امنیت

V i R u s Ʒ²

هک و امنیت

Virus 32

💢 دوستانم بی دفاع و دشمنانم بی جواب نخواهند ماند 💢

-->
آخرین نظرات
  • ۶ ارديبهشت ۰۳، ۱۶:۱۵ - hidden
    test

به لطف آموزش هایی که اتریب عزیز گذاشت و ما هم کار با محیط گرافیکی رو تو پایتون یاد گرفتیم ( الکی D: )

تو این پست قراره به کمکش یه دفترچه تلفن گرافیکی با دیتابیس Sqlite بنویسیم و این آموزش قراره چهار قسمت بشه که امیدوارم مورد پیشرفتتون قرار بگیره

بخش اصلی این آموزش دیتابیس + گرافیکی بودن اون خواهد بود که مهم ترین بخش یه برنامه کاربردی میتونه باشه...

این دفترچه تلفن قراره سه تا کار برای ما انجام بده

1- ایجاد مخاطب ، 2- ویرایش مخاطب ، 3- حذف مخاطب

شاید پیش خودتون فکر کنید که مزخرف ترین برنامه ای میتونه باشه که نوشته میشه

بله درست فکر میکنید D:

 اما یادتون باشه برنامه نویس نرم افزار های کاربردی بزرگ همیشه از نرم افزار های کوچیک شروع کردن ، پس نا امید نشید

چون Tkinter رو خوب آموزش ندیدین مطمئنم هنگ میکنید ، برای همین هر وقت سوالی راجب کد ها بود حتما بپرسید جوابتون رو در اسرع وقت که حال و حوصلم سر جاش باشه میدم

برای اینکه با کد ها آشنا بشید و آمار سوالاتتون بالا نره ، چند تا آموزش از وبلاگ خودمون و از یه سایت دیگه بترتیب براتون آماده کردم که لینکاشو میتونید از اینجا دانلود و مشاهده کنید

برای برنامه نویسی پایتون هم پیشنهاد میکنم از ابزار Visual Studio Code بجای IDLE پیشرفض اون استفاده کنید

یه اسکریپت python با اسم Test یا یه اسم دلخواه ایجاد کنید

حالا اونو ویرایش کنید

طبق معمول اولین کاری که میکنیم باید کتابخونه هارو اضافه کنیم که کتابخونه های مورد نیاز ما Tkinter و Sqlite هستش که به این شکل توی برنامه وارد میشن

import sqlite3
from tkinter import *
import tkinter.ttk as ttk
import tkinter.messagebox as tkMessageBox

چون میخوام آموزش تقریبا کامل باشه حتی کتابخونه هارو هم توضیح میدم :|

کتابخونه ی sqlite3 : برای کار با دیتابیس توی پایتون هستش که واقعا هم ساده و شیرین و دوست داشتنیه

کتابخونه ی tkinter : برای کار با محیط های گرافیکی تو پایتون هستش ، مثلا ایجاد پنجره و دکمه و اینجور شر و ورا :)

کتابخونه ی tkinter.ttk : به کمک این کتابخونه میتونیم یه تم رو مثل یه تابع تعریف کنیم و در سر تا سر برنامه برای هر شیء استفاده کنیم ، یا اینکه میتونیم مستقیما برای تغییر تم یه شیء استفاده کنیم ، مثلا کد پایین رو نوشتم برای اینکه تفاوت رو در عمل ببینیم

from tkinter import *
from tkinter import ttk

window = Tk()
window.title('ViRus32')
window.geometry('250x85')
window.resizable(0,0)

button1 = Button(window,text='Button-1')
button1.pack()

button2 = ttk.Button(window,text='Button-2')
button2.pack()

اگه این کدهارو تست کنید

متوجه تفاوت دکمه ی اول که به کمک Tkinter ساخته شده با دکمه ی دوم که به کمک ttk نوشته شده میشید

این کدها هیچ ارتباطی با این آموزش نداره و فقط خواستم یه مثال ساده بزنم که دوزاریتون بیفته...

کتابخونه ی tkinter.messagebox : اینم همونطور که از اسمش مشخصه برای ایجاد کادر های پیام هستش...


توی پایتون بعد از وارد کردن کتابخونه ها نوبت به تنظیمات پنجره ی برنامه میرسه

مثلا باید اندازه ی پنجره رو مشخص کنیم و اینجور چیزا...

برای اینکار من از این کدها استفاده کردم

window = Tk()
window.title('دفترچه تلفن')
window.geometry('450x400')
window.resizable(0,0)

خط اول : ایجاد پنجره

خط دوم : تغییر عنوان پیشفرض برنامه با عنوان دفترچه تلفن

خط سوم : تنظیم اندازه ی پنجره برنامه

خط چهارم : غیر فعال کردن دکمه ی Maximize و غیر فعال کردن هر چیزی که باعث تغییر اندازه ی پنجره بشه

"   اینا میتونن توی ویروس نویسی موقع ساخت صفحه دیفیس و بعضی چیزای دیگه هم بهتون کمک کنن   "

البته خط پایین هم میتونه توی ویروس نویسی کمکتون کنه و درست نیست که اینجا مطرحش کنم

اما چون من معمولا کم پست میزارم بخاطر همین گفتم یه خرده پر محتوا باشه آموزشم ، چون چند بار اینو قبلا از من پرسیده بودید و من نبودم و بچه ها به شوخی پیچوندنتون D:

window.withdraw()

به هر حال این کد پنجره ی برنامه رو مخفی میکنه


حالا نوبت به کارای اصلی میرسه که قراره ظاهر برناممون رو درست کنیم

چون اگه کدهارو یهویی بزارم بعضی از دوستان آماتور ( خودمو میگم D: ) گیج میشن

برای همین اول یه تصویر کلی از پنجره ی اصلی برنامه میزارم که ببینید بطور کلی قراره ما چیکار کنیم

شاید ظاهرش زیاد براتون خوشایند نباشه که حق با شما هستش

چون کدهایی که برای ساخت این برنامه استفاده میشن برای ما مهم هستش و نه ظاهر اون

ظاهرشو هر جور که عشقتون کشید خودتون میتونید درست کنید

به هر حال حالا که دیدین برنامه ما ظاهرش چه شکلی خواهد بود میریم سراغ کد نویسیش

اگه آموزش هایی که لینکشو اولای پست گذاشتم رو دیده باشین و تمرین کرده باشید کدهایی که میزارم رو خیلی ساده میتونید درک کنید و خیلی راحت دست به ویرایش اونها بزنید

در مرحله ی اول قراره یه Frame تو قسمت بالای پنجره ایجاد کنیم که برای اینکار از این کد استفاده میکنیم

حتما هم تیکه به تیکه ی کدهایی رو که میزارم رو تست کنید

Mid = Frame(window, width=500,  bg="red")
Mid.pack(side=TOP)
MidLeft = Frame(Mid, width=100)
MidLeft.pack(side=LEFT, pady=10)
MidLeftPadding = Frame(Mid, width=200)
MidLeftPadding.pack(side=LEFT)
MidRight = Frame(Mid, width=100)
MidRight.pack(side=RIGHT, pady=10)

به کمک این کدها یه فریم ایجاد میکنیم که به کمک Frame هم میتونیم اشیاء دیگه رو مرتب کنیم که من اینجا برای مرتب کردن دو تا دکمه استفاده کردم که الان فقط کافیه دکمه هارو فراخوانی کنم

البته من میتونم اینو پاکش کنم و یجور دیگه بنویسم و فقط دکمه ی خالی بزارم ، چون این یه چیز اضافست و باعث میشه کدامونو پیچیده جلوه بده ، اما چون اونجوری دیگه ظاهر برناممون خیلی مزخرف میشد مجبور شدم اینو بزارم که یک درصد به برناممون قیافه بده D:

البته اگه یه خرده انگلیسیتون خوب باشه و یه خرده هم آموزش پایتون ببینید میتونید اینارو درک کنید ، بخاطر همین بود که اون لینک های آموزشی رو براتون قرار داده بودم که یه خرده با مقدمات آشنا بشید

پس الان میمونه اینکه دکمه هامون رو روی این Frame اضافه کنیم که برای اینکار از این کد استفاده میکنیم

btn_add = Button(MidRight, text="+ اضافه کردن", bg="pink",foreground="black")
btn_add.pack(side=RIGHT)

btn_delete = Button(MidLeft, text="- حذف کردن", bg="pink",foreground="black")
btn_delete.pack(side=LEFT)

که بطور کلی اینجوری میشه

Mid = Frame(window, width=500,  bg="red")
Mid.pack(side=TOP)
MidLeft = Frame(Mid, width=100)
MidLeft.pack(side=LEFT, pady=10)
MidLeftPadding = Frame(Mid, width=200)
MidLeftPadding.pack(side=LEFT)
MidRight = Frame(Mid, width=100)
MidRight.pack(side=RIGHT, pady=10)

btn_add = Button(MidRight, text="+ اضافه کردن", bg="pink",foreground="black")
btn_add.pack(side=RIGHT)

btn_delete = Button(MidLeft, text="- حذف کردن", bg="pink",foreground="black")
btn_delete.pack(side=LEFT)

حالا نوبت به اضافه کردن TreeView میرسه که برای نمایش اطلاعات بصورت درختی هستش

بطور کلی میتونیم داخلش اطلاعات ثبت شده و اینجور چیزارو به نمایش بزاریم که یه چیز تو مایه های DataGrid هستش

پس کدشو اضافه میکنیم که کدش این هست

TableMargin = Frame(window, width=500)
TableMargin.pack(side=TOP)
scrollbarx = Scrollbar(TableMargin, orient=HORIZONTAL)
scrollbary = Scrollbar(TableMargin, orient=VERTICAL)
tree = ttk.Treeview(TableMargin, columns=("MemberID", "Contact", "Age" , "Gender", "Lastname", "Firstname"), height=300, selectmode="extended", yscrollcommand=scrollbary.set, xscrollcommand=scrollbarx.set)
scrollbary.config(command=tree.yview)
scrollbary.pack(side=LEFT, fill=Y)
scrollbarx.config(command=tree.xview)
scrollbarx.pack(side=BOTTOM, fill=X)
tree.heading('MemberID', text="MemberID", anchor=E)
tree.heading('Firstname', text="نام", anchor=E)
tree.heading('Lastname', text="نام خانوادگی", anchor=E)
tree.heading('Gender', text="جنسیت", anchor=E)
tree.heading('Age', text="سن", anchor=E)
tree.heading('Contact', text="شماره تماس", anchor=E)
tree.column('#0', stretch=NO, minwidth=0, width=0, anchor=E)
tree.column('#1', stretch=NO, minwidth=0, width=0, anchor=E)
tree.column('#2', stretch=NO, minwidth=0, width=100, anchor=E)
tree.column('#3', stretch=NO, minwidth=0, width=50, anchor=E)
tree.column('#4', stretch=NO, minwidth=0, width=70, anchor=E)
tree.column('#5', stretch=NO, minwidth=0, width=90, anchor=E)
tree.column('#6', stretch=NO, minwidth=0, width=70, anchor=E)
tree.pack()

خب اینم از این

حالا هم کدهارو بصورت پشت سر هم قرار میدم که یه وقت خسته نشید D:

import sqlite3
from tkinter import *
import tkinter.ttk as ttk
import tkinter.messagebox as tkMessageBox

window = Tk()
window.title('دفترچه تلفن')
window.geometry('450x400')
window.resizable(0,0)

Mid = Frame(window, width=500,  bg="red")
Mid.pack(side=TOP)
MidLeft = Frame(Mid, width=100)
MidLeft.pack(side=LEFT, pady=10)
MidLeftPadding = Frame(Mid, width=200)
MidLeftPadding.pack(side=LEFT)
MidRight = Frame(Mid, width=100)
MidRight.pack(side=RIGHT, pady=10)

btn_add = Button(MidRight, text="+ اضافه کردن", bg="pink",foreground="black")
btn_add.pack(side=RIGHT)

btn_delete = Button(MidLeft, text="- حذف کردن", bg="pink",foreground="black")
btn_delete.pack(side=LEFT)

Mid = Frame(window, width=500,  bg="red")
Mid.pack(side=TOP)
MidLeft = Frame(Mid, width=100)
MidLeft.pack(side=LEFT, pady=10)
MidLeftPadding = Frame(Mid, width=200)
MidLeftPadding.pack(side=LEFT)
MidRight = Frame(Mid, width=100)
MidRight.pack(side=RIGHT, pady=10)

btn_add = Button(MidRight, text="+ اضافه کردن", bg="pink",foreground="black")
btn_add.pack(side=RIGHT)

btn_delete = Button(MidLeft, text="- حذف کردن", bg="pink",foreground="black")
btn_delete.pack(side=LEFT)

اینم که از این و ایزی ایزی تامام تامام ، فقط اینکه اگه سوالی بود حتما بپرسید

و خیلی تمرین کنید و با کدهایی که اون آموزشها گذاشته بودن ور برید ، ور رفتن رو هم که مطمئنم همتون خوب بلدید

علتشم نپرسید D:

توی آموزش بعدی هم دستور ساخته شدن دیتابیس و اضافه کردن مخاطب رو میزارم

قسمت دوم آموزش ساخت دفترچه تلفن در پایتون

موفق باشید

نظر (۱۶)

بخش‌هایی از این نظر که با * مشخص شده، توسط مدیر سایت حذف شده است
***** :|
ابلفضل
خداوکیلی این عمو کدر ماست؟ :|
رو نمیکردیا :|
عالی :|
بزار که لنگ دیتابیسم |:
اینا رو انشالله دیگه بریم پست ششم چشم موزارم :|
ولی دیتابیس رو شوما بزار که اماتورم :|
Virus32 MR_C0D3R ‌ :
حاجی یه خرده سانسور شده حرفتو بزن که من مجبور نباشم سانسور کنم دیگه D:
نه من اتکرم ، دارم ادای کدر رو در میارم :|
شاعر میگه : یاد بگیر باشی ساکت ، پر باشه باکت همینه دیگه D:
الانکه این کامنتت رو میبینم به خودم بیشتر امیدوار میشم
لامصب مدرک پایتون داری و ویروس هم بیشتر از من به تو امید داره تو پایتون
بعدا اینجوری میگی ؟
باشه در اولین فرصت میزارم
چون زیاد تایپ کردم یه نمه حس تایپ مایپ پاچیده :)

سلام 

خیلی خوب بود

راستی اگه میشه رمز مطالب رو هم بفرستید برام

تو قسمت رمز مطالب گفتم ولی پیاممو پاک کردین

ممنون میشم

Virus32 Attrib32 32 32 :
اوکی
شما همون علیرضا علیزاده ای؟

آره 

ولی اتریب من نفهمیدم چرا با من دشمنی داری؟؟

رمزم بدی که دعات میکنم😁

Virus32 Attrib32 32 32 :
وات؟ :| دشمنی چیه؟
رمز فرستاده میشه دیگه

نه آخه من چندبار اشتباهی پیام دادم شما فکر کردی من اسپم میزنم

به هر حال ما رو ببخش😁

Virus32 Attrib32 32 32 :
اهان

این ارور چیه؟

bad geometry specifier "450*400"

Virus32 MR_C0D3R ‌ :
کدارو مگه Copy & Paste نکردی ؟
یا اینکه دست به تغییر کدها زدی و اشتباه کردی ؟
این کد من نیست و علت اینکه ارور میده بخاطر اینه که از * ( ستاره ) به جای x ( ایکس ) استفاده کردی
به این شکل باید نوشته بشه
window.geometry('450x400')

خدا رحمتت کنه کدر جون :)

آخیشششش

راحت شدم

در به در دنبال همین tree view بودم

پدرم در اومد نتونستم پیدا کنم

آخرش رفتم پای کیوت

که هیچی

من همین تکینترو بلدم

گل کاشتی داداش

خیلی حال نمودم ;)

چند تا چیز و چند تا سوال

بهتره آخرش اینو هم بزاریم. اینتوری یکم قشنگ تر میشه موقع کار(البته اثری نداره کلی میگم :)  )

window.mainloop()

سوالم هم میشه ما چه طوری یه محتوایی رو تو همون view نشون بدمی؟

من تو اونم مشکل دارم

ممنون میشم:)

مثلا یه فور تعریف کنیم و تو اون بزنیم

Virus32 Attrib32 32 32 :
کی میگه اثر نداره؟ وقتی اجرا نشد تو فایل اجرایی  میفهمی
سوالت چی بود یبار دیگه بگو

عه!

واقعا؟ خدا وکیلی نمیدونستم

راستش اینو نوشتم زیاد مطمئن نبودم چون بدون اون روی ide من ران نمیشد

سوال اینه که الان ما گرافیکیش رو ساختیم دیگه

تا الان یکسری قسمت داریم به نام سن و نمیدونم شماره و نام و اینا

حالا میخوام بهش یکسری اعدادم بدم

دیده بودم اینو اما نمیدونم چه طوری باید ازش استفاده کنم

set()

که باید چیز های دیگه ای هم داشته باشه

ممنون میشم کمکم کنی اتریب

یه پیامم تو تل بهم بده:)

گمت کردم به خدا

Virus32 Attrib32 32 32 :
ایدیت رو بده
بخش‌هایی از این نظر که با * مشخص شده، توسط مدیر سایت حذف شده است

سلام اتریب

بفرما

*******

سانسور کنیا :)

دستت طالا

Virus32 Attrib32 32 32 :
چه عجب خخ 
یکی دو ساعت دیگه پیام میدم

نامرد به خاطر تو از تلگرام محروم شدم!

بابام اومد دید با یکی چت میکنم

گرفت آیدیشو نیگا کرد حالا من موندم و سگک کمربند و یه شکستگی درجه 2

(آخرشو چرت گفتم)

ولی تقصیر توبود!!!!!!!!!!!!!!!!!!!!!!!!!!!!

خیلی حال کردم با وبتون عالیه

اتریب خیلی باحالی :)

راستی زیر 15 هستی نه؟

فکر میکنم همینطور باشه🤨

Virus32 Attrib32 32 32 :
زیر ۱۵؟ وات د فاک

کدر تو اون کد اخریه عمدن کدتو دو بار کپی پیست کردی عایا؟
تری ویو هم توش نبود ناموسن :(

Virus32 Attrib32 32 32 :
چی میگی؟

سلام وقت بخیر این مطالب پیش نیاز که فرموده بودید به درک مطالب کمک میکنه رو من نتونستم بهشون دسترسی پیداکنم 

بعد یه سوال دیگه میشه data بیس رو نگذاشت من یه پروژه ی کلاسی مشابه این رو دارم ولی حرفی از دیتا بیس زده نشده

باتشکر

 

Virus32 Virus 32 :
سلام ممنون
از این پست شروع میشه تا قسمت ششم
دفتر تلفن بدون دیتابیس ؟
مخاطب هارو کجا میخوایید ثبت کنید؟

برنامه ای بنویسید که مدیریت کلیه اطلاعات مخاطبان شامل:
1. نام
2. نام خانوادگی
3. شماره موبایل
4. شماره تلفن محل سکونت
5. آدرس محل سکونت
6. کد ملی ( به عنوان صفت کلیدی )
7. آدرس ایمیل
را بتواند بصورت: 
• اضافه 
• جستجو
• حذف براساس نام خانوادگی
• ویرایش
• گزارش شماره مخاطبان
• گزارش آدرس مخاطبان
• گزارش ایمیل مخاطبان
انجام دهد.

موضوع اصلیش اینه برای منو کاربری هم باید از think استفاده کنم

بنظرتون خیلی زمانبره ؟یا با مطالعه اینا میشه از پسش بر آمد؟

Virus32 Virus 32 :
این باید دیتابیس داشته باشه عزیزم
برای ثبت اطلاعات ، ویرایش ، جستجو و ...
در اصل تمام این عملیات ها مختص دیتابیس ها هست که ما با زبان های برنامه نویسی یه قالبی به برنامه میدیم تا حالت کاربر پسند تر داشته باشه
کار سختی نیست
البته think اسم یه مقاله درباره پایتونه شما باید با Tkinter یا امثالش کار کنید
ابتدا یه خودکار و کاغذ بگیر و طرح پروژه ات رو نقاشی کن
بعد میتونی به کمک کتابخانه Tkinter کارت رو شروع کنی که تو این پست هم تقریبا کل کارت رو توضیح دادن
قالب رو که ساختی
به کمک کوئری های دیتابیس ها میتونی خیلی راحت پروژه ات رو تکمیل کنی که این دستورات هم برای تمام دیتابیس ها تقریبا شبیه هست

باعرض سلام وادب ممنون از راهنمایی ها وپاسخگویی خوبتون امیدوارم بتونم از پسش بربیام🙏🏻🙏🏻🙏🏻🙏🏻

Virus32 Virus 32 :
سلام
موفق بشید

سلام وعرض ادب واحترام شما پروژه هم قبول میکنید انجام بدید؟

باتشکر

Virus32 ناشناس قرن جدید :
سلام
خیر

سلام وقت بخیر. ببخشید چطور میتونیم برای این تابع هایی که نوشتیم تست بنویسیم؟

نحوه ی نوشتن تستشون چطوریه؟با توجه به اینکه نه ورودی میگیرن نه خروجی مشخصی بهمون میدن که داخل assert بنویسیم

Virus32 Virus 32 :
سلام
تو مراحل بعدی روش ایجاد دیتابیس و اینسرت رو توضیح دادیم
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی