0. مقدمه و آشنایی (ویدیو در یوتیوب: https://youtu.be/Rd7v9dURO6Q)
- تا میتونید زبان انگلیسیتون رو قوی کنید، به نظرم مهم ترین مهارتیه که میتونید یاد بگیرید و شما رو توی زندگیتون بیشتر از هر چیزی جلو میندازه. وقتی زبانتون خوب باشه دیگه توی هر حوزه ای (برنامه نویسی، مهندسی، پزشکی، موسیقی، ...) میتونید تبدیل به یه متخصص بشید چون به بیشمار آموزش رایگان انگلیسی که توی اینترنت وجود داره دسترسی دارید که تعدادشون خیلی خیلی بیشتر و کیفیتشون بالاتر از آموزش های فارسیه.
- لازم نیست خودتون رو هلاک کنید، روزی 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
این محیط ها کدنویسی رو برای ما راحت تر میکنند. مثلا خط ها رو رنگ بندی میکنند یا اشکالات تایپی رو متوجه میشند. در نهایت فرق اساسی و مهمی ندارند و با هر کدوم که راحت تر هستید میتونید کار کنید.
نام برنامه | لینک دانلود | توضیحات |
---|---|---|
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
- نحوه تبدیل فایل پایتون به فایل اجرایی exe در آپارات: https://aparat.com/v/Jmneh
- آشنایی با ساخت ربات تلگرام با telebot در پایتون: https://aparat.com/v/nJyjc
- معرفی و آشنایی با هوش مصنوعی ChatGpt توسط متین پیرولی: https://youtu.be/42W5ksGUS40
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))
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 مشابه 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")
نصب 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/
آموزش برگرفته از:
- https://youtu.be/pQvkoaevVMk
نصب کتاب خانه ها:
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()