ویرگول
ورودثبت نام
آرتین کریمیان
آرتین کریمیانروبیکا من : https://rubika.ir/artinkarimian3
آرتین کریمیان
آرتین کریمیان
خواندن ۴ دقیقه·۱ ماه پیش

پروژه اول با پایتون : ردیابی شماره موبایل

خب این پروژه چی کاری میکند ؟

این پروژه یک شاهکاری است که با وارد کردن شماره داخل برنامه کشور شماره و ارائه کننده تلفن آن را به شما میدهد .

برنامه هایی که نیاز دارید :

1-خود پایتون

2-کتابخانه messagebox

3-کتابخانه phonenumbers

کتابخانه های نیاز را نصب کنید و کد زیر را در پایتون وارد کنید.

import tkinter as tk from tkinter import messagebox # فرض می‌کنیم کتابخانه‌های phonenumbers نصب شده باشند # اگر نصب نیستند، با دستور pip install phonenumbers در ترمینال نصب کنید. try: from phonenumbers import parse, geocoder, carrier except ImportError: ح print("کتابخانه phonenumbers یافت نشد. لطفاً با دستور pip install phonenumbers آن را نصب کنید.") # در اینجا می‌توانید یک پنجره خطا نمایش دهید یا برنامه را متوقف کنید. exit() # --- تابع برای اعتبارسنجی ورود اعداد و علامت + برای کد کشور --- def validate_country_code_input(P): # P: مقدار فعلی فیلد ورودی # اجازه ورود عدد، علامت '+' و رشته خالی if P.isdigit() or P == "" or P == "+": return True # اجازه ورود '+' فقط در ابتدای رشته elif P.startswith("+") and P[1:].isdigit(): return True else: return False # --- تابع برای اعتبارسنجی ورود اعداد برای شماره تلفن --- def validate_numeric_input(P): if P.isdigit() or P == "": return True else: return False # --- تابع برای پردازش شماره تلفن --- def show_phone_info(): country_code_entry_text = entry_country_code.get().strip() phone_number_part = entry_phone_number.get().strip() # بررسی ورودی کد کشور if not country_code_entry_text: messagebox.showwarning("ورودی ناقص", "لطفاً کد کشور را وارد کنید.") return # اطمینان از اینکه کد کشور با '+' شروع می‌شود یا به آن اضافه می‌کنیم if not country_code_entry_text.startswith('+'): country_code_str = "+" + country_code_entry_text else: country_code_str = country_code_entry_text # بررسی عددی بودن قسمت بعد از '+' if len(country_code_str) > 1 and not country_code_str[1:].isdigit(): messagebox.showwarning("ورودی نامعتبر", "کد کشور باید فقط شامل اعداد (و علامت '+' در ابتدا) باشد.") return if len(country_code_str) == 1 and country_code_str == "+": # فقط '+' وارد شده messagebox.showwarning("ورودی نامعتبر", "لطفاً کد کشور را کامل وارد کنید.") return # بررسی ورودی شماره تلفن if not phone_number_part: messagebox.showwarning("ورودی ناقص", "لطفاً شماره تلفن را وارد کنید.") return if not phone_number_part.isdigit(): messagebox.showwarning("ورودی نامعتبر", "شماره تلفن باید فقط شامل اعداد باشد.") return full_phone_number_str = country_code_str + phone_number_part try: parsed_number = parse(full_phone_number_str) # برای نمایش موقعیت مکانی و اپراتور به زبان فارسی، می‌توانید از 'fa' استفاده کنید # اما کتابخانه phonenumbers ممکن است پشتیبانی کامل فارسی برای این بخش‌ها نداشته باشد. # در صورت نیاز به پشتیبانی کامل فارسی، باید از منابع دیگری استفاده کرد. location = geocoder.description_for_number(parsed_number, 'en') # 'en' برای سازگاری بهتر operator = carrier.name_for_number(parsed_number, 'en') # 'en' برای سازگاری بهتر location_display = location if location else "موقعیت مکانی یافت نشد" operator_display = operator if operator else "اپراتور یافت نشد" # نمایش نتیجه به فارسی result_text = f"شماره کامل: {full_phone_number_str}\n" \ f"موقعیت مکانی: {location_display}\n" \ f"اپراتور: {operator_display}" label_result.config(text=result_text, fg="blue") # غیرفعال کردن فیلدها و دکمه نمایش entry_country_code.config(state=tk.DISABLED) entry_phone_number.config(state=tk.DISABLED) button_show_info.config(state=tk.DISABLED) button_enter_new.config(state=tk.NORMAL) # فعال کردن دکمه ورود مجدد except Exception as e: # نمایش خطا به فارسی messagebox.showerror("خطا", f"خطا در پردازش شماره: {e}\nلطفاً فرمت شماره را بررسی کنید.") label_result.config(text="خطا در پردازش.", fg="red") # --- تابع برای ورود مجدد اطلاعات --- def enter_new_number(): label_result.config(text="", fg="black") # فعال کردن فیلدها و دکمه نمایش entry_country_code.config(state=tk.NORMAL) entry_phone_number.config(state=tk.NORMAL) button_show_info.config(state=tk.NORMAL) button_enter_new.config(state=tk.DISABLED) # غیرفعال کردن دکمه ورود مجدد # پاک کردن ورودی‌ها entry_country_code.delete(0, tk.END) entry_phone_number.delete(0, tk.END) # --- تنظیمات پنجره اصلی --- root = tk.Tk() root.title("بررسی اطلاعات شماره تلفن") root.geometry("400x350") # کمی بلندتر برای جا دادن ورودی کد کشور root.resizable(False, False) # --- فریم اصلی --- main_frame = tk.Frame(root, padx=10, pady=10) main_frame.pack(expand=True, fill=tk.BOTH) # --- بخش کد کشور --- label_country_code = tk.Label(main_frame, text="کد کشور:", font=('Arial', 10, 'bold')) label_country_code.grid(row=0, column=0, padx=5, pady=5, sticky=tk.W) # فیلد ورودی برای کد کشور - استفاده از تابع اعتبارسنجی جدید vcmd_country = (root.register(validate_country_code_input), '%P') entry_country_code = tk.Entry(main_frame, width=10, font=('Arial', 10), validate='key', validatecommand=vcmd_country) entry_country_code.grid(row=0, column=1, padx=5, pady=5, sticky=tk.W) # چسبیده به چپ # --- فیلد شماره تلفن --- label_phone_number = tk.Label(main_frame, text="شماره تلفن:", font=('Arial', 10, 'bold')) label_phone_number.grid(row=1, column=0, padx=5, pady=5, sticky=tk.W) # فیلد ورودی برای شماره تلفن vcmd_phone = (root.register(validate_numeric_input), '%P') entry_phone_number = tk.Entry(main_frame, width=25, font=('Arial', 10), validate='key', validatecommand=vcmd_phone) entry_phone_number.grid(row=1, column=1, padx=5, pady=5, sticky=tk.W) # چسبیده به چپ # --- دکمه ها --- button_show_info = tk.Button(main_frame, text="نمایش اطلاعات", command=show_phone_info, font=('Arial', 10, 'bold'), bg='#4CAF50', fg='white') button_show_info.grid(row=2, column=0, columnspan=2, padx=5, pady=10, sticky="ew") button_enter_new = tk.Button(main_frame, text="ورود مجدد اطلاعات", command=enter_new_number, state=tk.DISABLED, font=('Arial', 10), bg='#2196F3', fg='white') button_enter_new.grid(row=3, column=0, columnspan=2, padx=5, pady=5, sticky="ew") # --- لیبل نمایش نتیجه --- label_result = tk.Label(main_frame, text="", justify=tk.LEFT, wraplength=350, font=('Arial', 11, 'italic')) label_result.grid(row=4, column=0, columnspan=2, padx=5, pady=10, sticky=tk.W) # تنظیمات grid برای چیدمان بهتر main_frame.grid_rowconfigure(0, weight=1) main_frame.grid_rowconfigure(1, weight=1) main_frame.grid_rowconfigure(2, weight=1) main_frame.grid_rowconfigure(3, weight=1) main_frame.grid_rowconfigure(4, weight=2) main_frame.grid_columnconfigure(0, weight=1) main_frame.grid_columnconfigure(1, weight=2) root.mainloop()
فایل اجرایی
فایل اجرایی

خب کد را اجرا کنید و صفحه بالا را میبینید الان اگر اطلاعات را وارد کنید عکس زیر را میبینید .

کد اجرا شده
کد اجرا شده

دیدید که زد مال ایران هست و اپراتور ایرانسل هست .

برای دانلود همین پایتون یا فایل تبدیل شده به برنامه روی نوشته لینک بزنید و 15ثانیه صبر کنید و فایل را دریافت کنید .

اگر ایده یا پروژه ای دیگری میخواهید در نظر ها بنویسید .

شماره تلفنردیابیپایتون
۷
۰
آرتین کریمیان
آرتین کریمیان
روبیکا من : https://rubika.ir/artinkarimian3
شاید از این پست‌ها خوشتان بیاید