This repository was archived by the owner on Aug 11, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathphone-book-gui.py
More file actions
83 lines (71 loc) · 4.44 KB
/
phone-book-gui.py
File metadata and controls
83 lines (71 loc) · 4.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from tkinter import *
from tkinter import messagebox
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# این نرم افزار یک دفترچه تلفن خیلی ساده گرافیکی است
# فعلا در این نسخه فقط نام و شماره تلفن گرفته شده و در لیستی
# وارد میشود
# این اطلاعات فعلا ذخیره نمیشوند
# اگر با این برنامه کار کنید متوجه میشوید که اگر بجای وارد
# کردن یک شماره تلفن یک اسم یا موارد دیگر وارد کنید برنامه
# کماکان کار میکند
# آیا میتوانید برنامه را به شکلی تغییر دهید که در صورتی که
# بجای شماره تلفن یک نام یا محتوای اشتباه وارد شود به کاربر
# اخطار دهد که شماره تلفن اشتباه وارد شده است؟
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# این یک دیکشنری است که اطلاعات تلفن را در خود ذخیره کرده است
phone_book = {"00000": "خواهرم", "00001": "برادرم"}
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# این یک تابع است که پس از هر بار اجرا، محتوای لیست را خالی
# کرده و سپس دوباره لیست را با اطلاعات دفترچه تلفن پر میکند
def show_phone_book_in_list():
phone_book_list.delete(0, END)
for phone in phone_book:
phone_book_list.insert("end", f"{phone} - {phone_book[phone]}")
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# زمانیکه بر روی دکمه افزودن کلیک میکنید، این تابع صدا زده
# میشود؛ در صورتی که نام یا شماره تلفن خالی باشد به کاربر
# اخطار داده میشود؛ در عیر اینصورت دفترچه تلفن بروز شده، لیست
# شماره ها پاک شده و از نو مقداردهی میشود؛ سپس یک پیغام به
# کاربر داده میشود
def add_phone_number_to_phone_book():
_name = name.get().strip()
_phone = phone.get().strip()
if _name == "" or _phone == "":
messagebox.showerror("خطا", "باید هر دو نام و شماره را وارد کنید")
else:
phone_book[name.get()] = phone.get()
show_phone_book_in_list()
messagebox.showinfo("موفق", "اطلاعات با موفقیت افزوده شد")
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# پنجره برنامه را میسازیم، عنوان آن را انتخاب میکنیم و طول و
# عرض آن را مشخص میکنیم
# آیا میتوانید عنوان پنجره و طول و عرض آن را تغییر دهید؟
window = Tk()
window.title("دفترچه تلفن")
window.geometry("250x300")
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ابتدا یک برچسب میسازیم که مقدار نام را نمایش میدهد سپس یک
# انتری میسازیم که میتواند مقدار نام را در خود قرار دهد
Label(window, text="نام").pack()
name = Entry(window)
name.pack()
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ابتدا یک برچسب میسازیم که مقدار تلفن را نمایش میدهد سپس یک
# انتری میسازیم که میتواند مقدار شماره تلفن را در خود قرار دهد
Label(window, text="تلفن").pack()
phone = Entry(window)
phone.pack()
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# یک دکمه ساختیم که بتوانیم با کلیک بر روی آن نام وشماره تلفن
# را به دفترچه و همینطور لیست اضافه کنیم
add_button = Button(window, text="افزودن", command=add_phone_number_to_phone_book)
add_button.pack()
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# این یک لیست است که هر سطر آن قابل انتخاب شدن است
# این لیست قرار است اطلاعات تلفن را در خود نمایش دهد
phone_book_list = Listbox(window)
phone_book_list.pack()
###~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# در ابتدای برنامه، لیست را با شماره تلفن های پیشفرض پر میکنیم
show_phone_book_in_list()
window.mainloop()