Skip to content

arashnm80/python-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

دوره آموزش برنامه نویسی پایتون

0. مقدمه و آشنایی (ویدیو در یوتیوب: https://youtu.be/Rd7v9dURO6Q)

توصیه های من به شما

  1. تا میتونید زبان انگلیسیتون رو قوی کنید، به نظرم مهم ترین مهارتیه که میتونید یاد بگیرید و شما رو توی زندگیتون بیشتر از هر چیزی جلو میندازه. وقتی زبانتون خوب باشه دیگه توی هر حوزه ای (برنامه نویسی، مهندسی، پزشکی، موسیقی، ...) میتونید تبدیل به یه متخصص بشید چون به بیشمار آموزش رایگان انگلیسی که توی اینترنت وجود داره دسترسی دارید که تعدادشون خیلی خیلی بیشتر و کیفیتشون بالاتر از آموزش های فارسیه.
  2. لازم نیست خودتون رو هلاک کنید، روزی 5 دقیقه وقت بذارید ولی مداوم و هر روز وقت بذارید. ما تو دنیایی زندگی میکنیم که بیشتر آدم ها ماه ها و سال های طولانی از زندگیشون رو بدون این که هیچ چیز جدیدی یاد بگیرند سپری میکنند. تو همچین شرایطی کافیه هر روز اندازه 5 دقیقه یه چیز به درد بخور یاد بگیرید تا در دراز مدت تبدیل به یه آدم حرفه ای تو حوزه کاریتون بشید.

ویدیو های جالب مرتبط با پایتون در یوتیوب

لینک ویدیو توضیحات
https://www.youtube.com/watch?v=qQXXI5QFUfw پر کاربرد ترین زبان های برنامه نویسی از 1965 تا 2022
https://www.youtube.com/watch?v=3PcIJKd1PKU مقایسه تعداد خطوط، مدت زمان ساخت و مدت زمان اجرای یک کار یکسان با 3 زبان برنامه نویسی مختلف
https://www.youtube.com/watch?v=_-KjEgCLQFw نمونه بازی مار ساخته شده در 60 خط طی 5 دقیقه با پایتون
https://www.youtube.com/watch?v=7kGNs5R-AM8 نمونه بازی تتریس یا همون خونه سازی در 180 خط طی 9 دقیقه با پایتون

مزایای پایتون

  • سادگی و توانایی نوشتن برنامه هایی با تعداد خطوط کم تر در زمان کوتاه تر
  • نزدیکی به زبان انسان و سطح بالا بودن (برای مثال مدیریت حافظه به صورت خودکار انجام میشه و دیگه نیازی نیست ما کاری کنیم)
  • توانایی ساخت برنامه برای پلتفرم های مختلف (ویندوز، مک، لینوکس، اندروید، ...)
  • کتاب خانه ها و ماژول های متعدد

کاربرد ها و کتاب خانه ها

  • Natural Language Processing (پردازش زبان طبیعی)
  • Computer Vision (پردازش تصویر)
  • GUI (رابط کاربری گرافیکی)
  • Game (ساخت بازی)
  • Web (وب)
  • Data Science (علوم داده)
  • Math (ریاضی)
  • Machine Learning (یادگیری ماشین)

1. نصب نرم افزار و نحوه اجرای کد ها (ویدیو در یوتیوب: https://youtu.be/zo6jQ5ZAZW8)

نصب خود پایتون روی سیستم

اگر بخواهید توی سیستم با استفاده از نرم افزار هایی مثل vscode یا pycharm کد نویسی کنید نیازه که اول از همه خود پایتون نصب باشه. اگر ویندوز 10 یا 11 داشته باشید نسبت به ویندوز های قدیمی خیلی راحت تر خواهید بود. برای دانلودش میتونید به آدرس زیر مراجعه کنید. حواستون به این نکته هم باشه که موقع نصب هر کدوم از نرم افزار ها اگر گزینه (add python to path) وجود داشت تیکش رو بزنید.
https://www.python.org/downloads

محیط های توسعه یا همون IDE ها

این محیط ها کدنویسی رو برای ما راحت تر میکنند. مثلا خط ها رو رنگ بندی میکنند یا اشکالات تایپی رو متوجه میشند. در نهایت فرق اساسی و مهمی ندارند و با هر کدوم که راحت تر هستید میتونید کار کنید.

نام برنامه لینک دانلود توضیحات
vscode https://code.visualstudio.com/Download میشه گفت در حال حاضر محبوب ترین محیط برنامه نویسی برای اکثر زبان هاست. بعد از نصبش به هر زبانی که بخواید برنامه نویسی کنید پیغام دانلود افزونه مربوط به اون زبان رو میده که از داخل خودش اگه اینترنتتون وصل باشه قابل دانلوده
pycharm https://www.jetbrains.com/pycharm/download دانلود و استفاده از نسخه کامیونیتی اش رایگانه
sololearn code playground https://www.sololearn.com/compiler-playground/python نیازی به نصب نیست و میتونید تحت وب کدتون رو اجرا کنی
Pydroid 3 - IDE for Python 3 https://play.google.com/store/apps/details?id=ru.iiec.pydroid3 میتونید توی موبایل باهاش کدنویسی کنید

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

print(2+3)

2. گرفتن ورودی و چاپ خروجی، کار با متغیر ها، اعمال ریاضی (ویدیو در یوتیوب: https://youtu.be/buwe3yIzd3Q)

نوشتن متن روی صفحه

print("hello world!")

حالت های دیگر پرینت:

print("hello ", end = "") # نوشتن متن روی صفحه بدون رفتن به خط بعد
print("world!")
print(10 * "stop") # ده بار نوشته استاپ رو پشت هم برای ما مینویسه

کامنت گذاری

print("این خط اجرا میشه")
# print("این خط اجرا نمیشه")
# کامنت تک خطی
"""
کامنت چند خطی
کامنت چند خطی
کامنت چند خطی
"""

استفاده از متغیر

age = 20
print(age)
other_age = age + 1
print(other_age)

انواع متغیر ها

age = 20 # integer عدد صحیح
score = 19.25 # float عدد اعشاری
name = "Arash" # string نوشته، متن
status = False # boolean درست یا غلط

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

a, b, c = 1, 19.5, "hello"
print(a)
print(b)
print(c)

برای دور محتوای نوشته هم میتونیم از نقل قول تکی هم از نقل قول 2 تایی استفاده کنیم:

a = 'hello'
b = "hello"

در نام گذاری متغیر ها حواستون باشه که به حرف بزرگ و کوچک باشه:

a = "hello"
A = 3
# این 2 متغیر متفاوت از هم هستند

شکل های درست و غلط برای نام گذاری متغیر ها:

# right forms✅:
myvar = "John"
my_var = "John"
_my_var = "John"
myVar = "John"
MYVAR = "John"
myvar2 = "John"

# wrong forms❌:
2myvar = "John"
my-var = "John"
my var = "John"

گرفتن ورودی از کاربر

print("enter your age:")
age = input()
print("your age is:", age)

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

birthday = input("enter your birthday: ")
age = 2023 - int(birthday)
print(age)

یکبار هم به جای int(birthday) بنویسید birthday تا خطایی که میده رو ببینید

توابع تبدیل نوع متغیر ها

int() # تبدیل به عدد صحیح
float() # تبدیل به عدد اعشاری
bool() # تبدیل به غیر بولین (درست یا غلط)
str() # تبدیل به متن

تبدیل جنس های مختف متغیر ها به یک دیگر (cast):

x = str(3)    # x = '3'
y = int(3)    # y = 3
z = float(3)  # z = 3.0

تشخیص جنس متغیر ها با استفاده از type :

x = 5
y = "Arash"
print(type(x))
print(type(y))

3. شرط و عبارات منطقی (لینک ویدیو در یوتیوب: https://youtu.be/8XJP8RAbmgI)

عملیات های ریاضی

print("taghsim:", 10 / 3)
print("taghsim rond shode be paeen:", 10 // 3)
print("zarb:", 10 * 3)
print("jam:", 10 + 3)
print("tafrigh:", 10 - 3)
print("baghi mande:", 10 % 3)
print("tavan:", 10 ** 3)
print(10 * "stop") # ده بار نوشته استاپ رو پشت هم برای ما مینویسه

اگر توی یه عبارت ترکیب چند تا عملیات ریاضی باشه مشابه چیزی که تو ریاضی خوندیم اول پرانتز حساب میشه، بعد ضرب و تقسیم و نهایتا جمع و تفریق.

مقایسه

x = input("enter x:")
x = int(x)
print(x == 10) # مساوی
print(x != 10) # مخالف
print(x > 10) # بزرگ تر
print(x >= 10) # بزرگ تر یا مساوی
print(x < 10) # کوچک تر
print(x <= 10) # کوچک تر یا مساوی

عبارات منطقی

x = input("enter x:")
x = int(x)
print(x < 20 and x > 10) # و
print(x > 100 or x < -100) # یا
print(not x == 10) # برعکس

شرط

temperature = 25

if temperature > 30: # اگر
    print("hot")
    print("drink water")
elif temperature > 20: # در غیر این صورت اگر
    print("nice weather")
    print("go and play outside")
else: # در غیر این صورت
    print("cold")
print("end")

برنامه چک کردن سن:

if int(age) < 0:
    print("Age is wrong.")
    print("enter another age")
elif int(age) < 18:
    print("you are a child")
elif int(age) > 100:
    print("go die")
else:
    print("You are in a good age")
print("end")

برنامه ای که چک میکنه عدد ورودی بین 0 و 20 هست یا نه (به 4 شکل مختلف انجام دادم):

x = int(input())

print("1:")
if 0 < x < 20: # اگر ایکس بین 0 و 20 بود
    print("ok")
else: # در غیر این صورت
    print("not ok")

print("2:")
if 0 < x and x < 20: # نوع دیگر نوشتن، دقیقا همون کار مدل بالایی رو میکنه
    print("ok")
else: # در غیر این صورت
    print("not ok")

print("3:")
if x < 0 or x > 20: # نوع دیگر نوشتن، دقیقا همون کار دو مدل قبلی رو میکنه
    print("not ok")
else: # در غیر این صورت
    print("ok")

print("4:")
if not(x < 0 or x > 20): # نوع دیگر نوشتن، دقیقا همون کار سه مدل قبلی رو میکنه
    print("ok")
else: # در غیر این صورت
    print("not ok")

نمونه ای از if که سر کلاس امتحان کردیم:

y = input("enter a text: ")

if y.lower() != "hello":
    print("hello back to you")
else:
    print("bye")

چک کردن زوج یا فرد بودن یک عدد:

x = input("enter your number: ")
x = int(x)

y = x % 2 # محاسبه باقیمانده تقسیم بر 2

if y == 0: # اگر باقی مانده صفر بود
    print("even")
else: # اگر باقی مانده صفر نبود
    print("odd")





گیتهاب

  • گیتهاب چیه و به جه دردی میخوره؟ چطوری تو ساخت یک فایل با دیگران مشارکت داشته باشیم و چطور درباره پروژه های دیگران نظر بدیم؟ ویدیوی ثبت نام و استفاده تو آپارات: https://aparat.com/v/mOrKl
  • آموزش pull request در گیتهاب توسط محمد کهنوی: https://www.aparat.com/v/TKckQ

ویدیو ها

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

01234567...
↓↓↓↓↓
Arash...

همچنین:

True = 1 = وصل بودن، روشن بودن، درست بودن
False = 0 = قطع بودن، خاموش بودن، غلط بودن

توابع کار با متن

text = "Arash Nemat Zadeh"
print(text) # حالت معمولی
print(text.upper()) # حروف بزرگ
print(text.lower()) # حروف کوچک
print(text.find("Nemat")) # پیدا کردن نوشته
print("Arash" in text) # True
print("Korosh" in text) # False
print(text.replace("Arash","Korosh")) # جایگزین کردن نوشته

لیست

names = ['arash', 'korosh', 'maryam', 'mina', 'reza']
print(names)
print(names[0]) # عضو اول
print(names[1]) # عضو دوم
print(names[-1]) # عضو آخر
names[0] = 'aaaaarash'
print(names)
print(names[0:3]) # از عضو 0 تا 2 (خود 3 جزءش نیست)
print(names)
names[1:3] = ['k', 'm'] # جایگزین کردن بخشی از لیست با یه لیست دیگه
print(names)

استفاده از توابع لیست:

numbers = [10, 20, 30, 40, 50]
print(numbers)
print(len(numbers)) # نمایش تعداد اعضا
numbers.append(60) # اضافه کردن عضو به انتها
print(numbers)
numbers.insert(2, 100) # اضافه کردن عضو جدید قبل عضو دوم
print(numbers)
print(10 in numbers) # چک کردن حضور 10 بین اعضا
print(90 in numbers) # چک کردن حضور 90 بین اعضا
numbers.remove(100) # حذف 100 از بین اعضا
print(numbers)
numbers.clear() # پاک کردن تمام اعضا
print(numbers)

txt1 = "My name is {fname}, I'm {age}".format(fname = "John", age = 36)
print(txt1)

x = input()
y = "Hello, this is our {name1} class".format(name1 = x)
print(y)

حلقه

حلقه while:

i = 1
while i <= 5:
    print(i)
    i = i + 1

تکرار نوشته:

i = 1
while i <= 5:
    print(i * "Bye")
    i = i + 1

استفاده از حلقه while برای ساخت دنباله فیبوناچی(دنباله ای که هر عضو اون جمع 2 تا عدد قبلیه):

a, b = 0, 1
while a < 20:
    print(a)
    a, b = b, a + b

حلقه for:

names = ["ali", "amin", "shabnam"]
for i in names:
    print("Salam " + i)

# انجام همون کار با حلقه while
i = 0
while i < len(names):
    print("Salam " + names[i])
    i = i + 1

نمایش اندازه هر کلمه در لیست با حلقه for:

my_words = ['programmer', 'git', 'vscode']
for w in my_words:
    print(w, len(w))

range

numbers = range(5) # از صفر تا 4 (خود 5 شاملش نیست)
for i in numbers:
    print(i)

for i in range(5): # همون کد قبلی به صورت کوتاه تر
    print(i)

numbers = range(15, 20) # از 15 تا 19 (خود 20 نیست)
for i in numbers:
    print(i)
    
numbers = range(10, 100, 5) # از 10 تا 100 پنج تا پنج تا (خود 100 که آخریه جزءش نیست)
for i in numbers:
    print(i)
    

دنباله فیبوناچی با حلقه for:

# fibonacci series: z = x + y
# 1 1 2 3 5 8 13 21
# x y z →
#   x y z →
#     x y z →
#       x y z →

x = 1
y = 1
for i in range(10):
    print(x)
    z = x + y
    x = y
    y = z

tuple

توضیح: tuple مشابه list است با این تفاوت که قابل تغییر نیست.

numbers = (1, 2, 3, 4)
numbers[0] = 10 # ارور میده چون قابل تغییر نیست

تو در تو نوشتن

چاپ مقسوم علیه های اعداد 1 تا 20:

for x in range(1, 21):
    print("\n")
    print(x, end=": ")
    for i in range(1, x + 1):
        if x % i == 0:
            print(i, end=", ")

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

تولید عدد رندوم:

import random # فراخوانی و وارد کردن توابع مربوط تو تولید اطلاعات رندوم به برنامه

n = random.randint(1,1000) # تولید عدد رندوم از 1 تا 1000
print(n)

توابع

مثال اول:

def amin():
    print("be amin khosh oomadid:")
    x = int(input())
    y = int(input())
    print(x + y)

print("Hello")
amin()
print("bye")

مثال دوم:

import math # فراخوانی توابع ریاضی به برنامه خودمون

# تابع حسین پارامتر نداره
# یدونه ورودی از ما میگیره و فاکتوریلش رو حساب میکنه
def hossein():
    print("ye adad vared konid:")
    x = input()
    x = int(x)
    # x = math.sqrt(x) # تابع نمونه دیگری تو توابع ریاضی که رادیکال رو چاپ میکنه
    x = math.factorial(x)
    x = int(x)
    print(x)

# تابع سید 2 تا پارامتر تو ورودی میگیره و ضربشون رو چاپ میکنه
def seyed(a, b):
    z = a*b
    print(z)

# مثلا میتونیم اینطوری از تابع سید که تو بالا تعریف کردیم استفاده کنیم:
# for i in range(20):
#     x = int(input("x: "))
#     y = int(input("y: "))
#     seyed(x, y)

مثال سوم: فرض کنید کل کد مثال قبل رو توی یک فایل به اسم دلخواه مثل myfunc.py ذخیره کنیم. حالا کنارش تو همون پوشه یه فایل پایتون دیگه درست میکنیم و اگه بخوایم میتونیم از توابع قبلی بدون این که دوباره نویسی کنیم اینطوری استفاده کنیم:

from myfunc import hossein # وارد کردن تابع حسین از فایل قبلی

hossein() # اجرای تابع حسین

خواندن و نوشتن فایل در پایتون

مقدمه

ما در پایتون یک فایل رو با دستور ()open باز میکنیم. این دستور برای کار کردن به 2 پارامتر نیاز داره: اسم فایل و mode کار کردن. مود یا حالت کار با فایل میتونه یکی از 4 حالت زیر باشه:

"r" - Read - خواندن - حالت پیشفرض همینه که در صورت وجود نداشتن فایل ارور میده
"a" - Append - ضمیمه در انتها - اگر فایل از قبل وجود نداشته باشه اون رو میسازه
"w" - Write - نوشتن - فایل رو برای نوشتن باز میکنه و اگر از قبل وجود نداشته باشه میسازدش
"x" - Create - ساختن - فایل رو ایجاد میکنه و اگر از قبل وجود داشته باشه اررور میده

همچنین میتونیم تعیین کنیم تا با فایل به صورت نوشته رفتار بشه یا دودویی:

"t" - Text - نوشته - حالت پیشفرض، برای متون
"b" - Binary - دودویی یا باینری - مثلا برا عکس ها

مثلا فرض کنید فایلی به اسم database.txt داریم. میتونیم این فایل رو با یکی از دستور های زیر باز کنیم (چون r و t مقادیر پیشفرض هستند اجباری نیست که حتما بنویسیمشون):

f = open("database.txt")
f = open("database.txt", "rt")

خواندن فایل

از دستور ()read برای خواندن اطلاعات فایل بعد از باز کردنش استفاده میشه.
فرض کنید داخل پوشه ای که فایل پایتون اصلی مون به نام main.py وجود داره یک فایل متنی به نام database.txt با محتوای زیر وجود داره:

Hi everybody!
My name is Arash Nemat Zadeh.
What is your name?
What are your hobbies?
Who do you like to be?

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

f = open("database.txt", "r")
print(f.read()) 

اگر این database.txt تو پوشه دیگری باشه میتونیم آدرس کاملش رو مشابه زیر بنویسیم:

f = open("C:\\Users\\Arash\\Desktop\\folder1\\folder2\\database.txt", "r")
print(f.read())

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

f = open("database.txt", "r")
print(f.read(20)) 

گاهی نیاز داریم فایل رو خط به خط بخونیم. هر بار که بخواهیم یک خط جدید از فایل رو بخونیم یک بار دستور ()readline رو مینویسیم. مثلا اگر بخواهیم 2 خط اول فایلمون خوانده بشه 2 بار این دستور رو به شکل زیر مینویسیم:

f = open("database.txt", "r")
print(f.readline())
print(f.readline()) 

اگر بخواهیم همه خطوط رو تک تک بخونیم میتونیم از یک حلقه for به شکل زیر استفاده کنیم:

f = open("database.txt", "r")
for x in f:
    print(x, end="") 

یا مثلا وقتی میخوایم فقط یک خط به خصوص رو بخونیم به شکل زیر عمل میکنیم (چاپ خط سوم فایل در خروجی):

f = open("database.txt", "r")
line = 1
for x in f:
    if line == 4:
        print(x, end="")
    line += 1

به عنوان یک عادت خوب در دنیای برنامه نویسی همیشه در آخر برنامه بعد این که کار تان با فایل تمام شد آن را با دستور ()close ببندید:

f = open("database.txt", "r")
print(f.readline())
f.close()

نوشتن روی فایل

با دستور ()write میتونیم اطلاعات رو توی یک فایل بنویسیم و برای استفاده در آینده ذخیره کنیم:
حالت append یعنی نوشتن در ادامه مطالب قبلی:

# comment: باز کردن فایلی جدید و اضافه کردن یک خط نوشته در انتهای آن
f = open("database2.txt", "a")
f.write("This is a line appended to the end.")
f.close()

# comment: باز کردن فایل خطوط بالاتر و خواندن خط نوشته شده
f = open("database2.txt", "r")
print(f.read()) 

حالت write یعنی پاک کردن اطلاعات قبلی و نوشتن از اول:

# comment: باز کردن فایلی جدید و نوشتن روی آن با پاک کردن اطلاعات قبلی
f = open("database3.txt", "w")
f.write("This is a line written after deleting previous ones.")
f.close()

# comment: باز کردن فایل خطوط بالاتر و خواندن خط نوشته شده
f = open("database3.txt", "r")
print(f.read()) 

هنگام استفاده از دستور ()write اگر بعد از نوشتن یک خط بخواهیم به خط بعدی برویم به شکل زیر عمل میکنیم:

my_file.write("\n")

ساخت فایل جدید

با دستور ()open به 3 حالت زیر میتونیم یک فایل جدید بسازیم:

"x" - Create - ساختن - اگر فایل از قبل وجود داشته باشد ارور میدهد
"a" - Append - ضمیمه کردن - اگر فایل از قبل وجود نداشته باشد آن را میسازد
"w" - Write - نوشتن - اگر فایل از قبل وجود نداشته باشد آن را میسازد

حذف فایل

برای حذف فایل مازول os را به برنامه اضافه کرده و از دستور ()remove استفاده میکنیم:

import os
os.remove("database.txt") 

اگر فایل وجود نداشته باشد ولی بخواهیم آن را با دستور قبلی حذف کنیم ارور میگیریم. برای جلوگیری از این ارور میتوانیم اول بررسی کنیم که فایل وجود دارد یا نه:

import os
if os.path.exists("database.txt"): # اگر فایل وجود داشت
  os.remove("database.txt")
else: # اگر فایل وجود نداشت
  print("The file does not exist") 

حذف پوشه

به روش زیر میتوانیم یک پوشه را حذف کنیم:

import os
os.rmdir("folder1") 

ساخت رابط کاربری یا GUI با استفاده از tkinter

نصب tkinter با وارد کردن کد زیر در ترمینال:

pip install tk

ساخت پنجره ساده:

from tkinter import * # وارد کردن کل اجزای ماژول تکینتر به برنامه

window = Tk() # ساخت پنجره

window.mainloop() # نمایش پنجره

تغییر ابعاد پنجره و محل قرار گرفتنش:

from tkinter import * # وارد کردن کل اجزای ماژول تکینتر به برنامه

window = Tk() # ساخت پنجره

# تنظیم ابعاد به فرمت زیر
# widthxheight+x+y
# میتونیم 2 تای آخر یا اصلا هر 4 تا رو ننویسیم
window.geometry("800x400+50+10")

window.mainloop() # نمایش پنجره

اضافه کردن label ها به صفحه:

from tkinter import * # وارد کردن کل اجزای ماژول تکینتر به برنامه

window = Tk() # ساخت پنجره

# تنظیم ابعاد به فرمت زیر
# widthxheight+x+y
# میتونیم 2 تای آخر یا اصلا هر 4 تا رو ننویسیم
window.geometry("800x400+50+10")

label1 = Label(window, text="Arash") # ساخت یک لیبل با نوشته دلخواه
label1.place(x = 10, y = 30) # قرار دادن لیبل در جای دلخواه

label2 = Label(window, text="Korosh") # ساخت یک لیبل با نوشته دلخواه
label2.pack(padx=5, pady=2) # قرار دادن لیبل با فاصله گذاری خودکار
label3 = Label(window, text="Ali") # ساخت یک لیبل با نوشته دلخواه
label3.pack(padx=5, pady=2) # قرار دادن لیبل با فاصله گذاری خودکار
label4 = Label(window, text="Reza") # ساخت یک لیبل با نوشته دلخواه
label4.pack(padx=5, pady=2) # قرار دادن لیبل با فاصله گذاری خودکار

label5 = Label(window, text="Maryam", font = ("Times", 20)) # تغییر سایز و فونت
label5.place(x = 500, y = 300)

label6 = Label(window, text = "Zahra", fg="blue", bg="yellow") # تنظیم رنگ نوشته و پس زمینه
label6.pack()

window.mainloop() # نمایش پنجره

ساخت Entry یا جای خالی تک خطی:

from tkinter import * # وارد کردن کل اجزای ماژول تکینتر به برنامه

win = Tk() # ساخت پنجره

entry1 = Entry(win) # ساخت جای خالی یک خطی برای نوشته
entry1.pack()

win.mainloop() # نمایش پنجره

قرار دادن یک label سمت چپ و یک entry سمت راست:

from tkinter import * # وارد کردن کل اجزای ماژول تکینتر به برنامه

win = Tk() # ساخت پنجره

entry1 = Entry(win) # ساخت جای خالی یک خطی برای نوشته
entry1.pack(side=RIGHT) # قرار دادن سمت راست

label1 = Label(win, text="my label")
label1.pack(side=LEFT) # قرار دادن سمت چپ

win.mainloop() # نمایش پنجره

برای علاقه مندان: بازی با حالت های دیگر چیدمان (زبانش فرانسویه ولی مهم نیست. میتونید به کد هاش نگاه مختصر بندازید و بعد چک کنید ببینید حاصل چه چیدمانی شده): https://infoforall.fr/python/python-act110.html

قرار دادن button (دکمه) کنار entry که با زدن روش متن داخلش رو تو ترمینال چاپ میکنه:

from tkinter import * # وارد کردن کل اجزای ماژول تکینتر به برنامه

def myfunc():
    text = entry1.get() # دریافت نوشته از entry
    print(text) # چاپ نوشته در ترمینال

win = Tk() # ساخت پنجره

entry1 = Entry(win) # ساخت جای خالی یک خطی برای نوشته
entry1.pack()

btn1 = Button(win, text="print", command=myfunc) # تعریف دستور برای زمان کلیک شدن دکمه
btn1.pack()

win.mainloop() # نمایش پنجره

حالا کد قبلی رو تغییر میدیم تا به جای چاپ تو ترمینال به صورت messagebox (پیغام) روی صفحه به ما نشون بده:

from tkinter import * # وارد کردن کل اجزای ماژول تکینتر به برنامه
from tkinter import messagebox # اضافه کردن ماژول پیغام به برنامه

def myfunc():
    text = entry1.get() # دریافت نوشته از entry
    messagebox.showinfo("my title", text) # نشان دادن پیغام در صفحه

win = Tk() # ساخت پنجره

entry1 = Entry(win) # ساخت جای خالی یک خطی برای نوشته
entry1.pack()

btn1 = Button(win, text="print", command=myfunc) # تعریف دستور برای زمان کلیک شدن دکمه
btn1.pack()

win.mainloop() # نمایش پنجره

نمونه استفاده از grid در tkinter پایتون: https://www.pythonguis.com/tutorials/create-ui-with-tkinter-grid-layout-manager/

تشخیص چهره با opencv و deepface

آموزش برگرفته از:

pip install opencv-python
pip install --no-deps deepface

کد:

import threading

import cv2
from deepface import DeepFace

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

counter = 0

reference_img = cv2.imread("reference.jpg")  # use your own image here

face_match = False


def check_face(frame):
    global face_match
    try:
        if DeepFace.verify(frame, reference_img.copy())['verified']:
            face_match = True
        else:
            face_match = False
    except ValueError:
        face_match = False


while True:
    ret, frame = cap.read()

    if ret:
        if counter % 30 == 0:
            try:
                threading.Thread(target=check_face, args=(frame.copy(),)).start()
            except ValueError:
                pass
        counter += 1
        if face_match:
            cv2.putText(frame, "MATCH!", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 0), 3)
        else:
            cv2.putText(frame, "NO MATCH!", (20, 450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 3)

        cv2.imshow('video', frame)

    key = cv2.waitKey(1)
    if key == ord('q'):
        break

cv2.destroyAllWindows()

Releases

No releases published

Packages

No packages published