احبتي الكرام السلام عليكم ورحمه الله عندي الداله واعتقد بانها لا تتعامل صحيحا اريد تتعامل صحيح مع الالوف مثلا 102500 هنا اريد مائة الف والفين وخمسمائه ريال او تعطونا الطريقه الصحيحه//
# زر التحويل
self.convert_button = QPushButton("تحويل إلى حروف")
self.convert_button.clicked.connect(self.convert_to_words)
# حقل عرض النص المحول
self.result_label = QLabel("الناتج بالحروف:")
self.result_field = QTextEdit()
self.result_field.setReadOnly(True)
# إضافة العناصر إلى الواجهة
layout.addWidget(self.input_label)
layout.addWidget(self.input_field)
layout.addWidget(self.convert_button)
layout.addWidget(self.result_label)
layout.addWidget(self.result_field)
self.setLayout(layout)
self.setWindowTitle("تحويل الأرقام إلى حروف")
hundred = n // 100
n %= 100
ten = n // 10
unit = n % 10
if hundred > 0:
result += hundreds[hundred] + " "
if 10 <= n < 20:
result += teens[n - 10] + " "
else:
if unit > 0:
result += units[unit] + " " # الوحدة أولاً
if ten > 0:
result += "و " + tens[ten] + " " if unit > 0 else tens[ten] + " "
return result.strip()
if number == 0:
return "صفر"
# تقسيم الرقم إلى الريال والهللات
whole_part = int(number)
fractional_part = round((number - whole_part) * 100)
if millions > 0:
result += tafqitThreeDigits(millions) + " مليون "
if thousands > 0:
# إضافة "ألف" بدون "واحد" إذا كان العدد أكثر من 1000
result += tafqitThreeDigits(thousands) + " ألف " if thousands > 1 else "ألف "
if whole_part > 0:
result += "و " + tafqitThreeDigits(whole_part) if result else tafqitThreeDigits(whole_part)
result += " ريال" # إضافة "ريال" بعد الرقم الأساسي
# إضافة الهللات إذا كانت موجودة
if fractional_part > 0:
result += " و " + tafqitThreeDigits(fractional_part) + " هللة"
return result.strip()
# دالة لتحويل الرقم في الحقل إلى نص وعرضه
def convert_to_words(self):
try:
number = float(self.input_field.text())
result = self.tafqit(number)
self.result_field.setText(result)
except ValueError:
self.result_field.setText("الرجاء إدخال رقم صالح")
السؤال
صابر مغترب
احبتي الكرام السلام عليكم ورحمه الله عندي الداله واعتقد بانها لا تتعامل صحيحا اريد تتعامل صحيح مع الالوف مثلا 102500 هنا اريد مائة الف والفين وخمسمائه ريال او تعطونا الطريقه الصحيحه//
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QTextEdit, QMessageBox
class TafqitApp(QWidget):
def __init__(self):
super().__init__()
# إعداد الواجهة
self.initUI()
def initUI(self):
layout = QVBoxLayout()
# حقل إدخال الرقم
self.input_label = QLabel("أدخل المبلغ:")
self.input_field = QLineEdit()
# زر التحويل
self.convert_button = QPushButton("تحويل إلى حروف")
self.convert_button.clicked.connect(self.convert_to_words)
# حقل عرض النص المحول
self.result_label = QLabel("الناتج بالحروف:")
self.result_field = QTextEdit()
self.result_field.setReadOnly(True)
# إضافة العناصر إلى الواجهة
layout.addWidget(self.input_label)
layout.addWidget(self.input_field)
layout.addWidget(self.convert_button)
layout.addWidget(self.result_label)
layout.addWidget(self.result_field)
self.setLayout(layout)
self.setWindowTitle("تحويل الأرقام إلى حروف")
# دالة لتحويل الرقم إلى نص
def tafqit(self, number):
def tafqitThreeDigits(n):
units = ["", "واحد", "اثنان", "ثلاثة", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة"]
teens = ["عشرة", "أحد عشر", "اثنا عشر", "ثلاثة عشر", "أربعة عشر", "خمسة عشر", "ستة عشر", "سبعة عشر", "ثمانية عشر", "تسعة عشر"]
tens = ["", "عشرة", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون", "تسعون"]
hundreds = ["", "مائة", "مائتان", "ثلاثمائة", "أربعمائة", "خمسمائة", "ستمائة", "سبعمائة", "ثمانمائة", "تسعمائة"]
result = ""
hundred = n // 100
n %= 100
ten = n // 10
unit = n % 10
if hundred > 0:
result += hundreds[hundred] + " "
if 10 <= n < 20:
result += teens[n - 10] + " "
else:
if unit > 0:
result += units[unit] + " " # الوحدة أولاً
if ten > 0:
result += "و " + tens[ten] + " " if unit > 0 else tens[ten] + " "
return result.strip()
if number == 0:
return "صفر"
# تقسيم الرقم إلى الريال والهللات
whole_part = int(number)
fractional_part = round((number - whole_part) * 100)
millions = whole_part // 1000000
whole_part %= 1000000
thousands = whole_part // 1000
whole_part %= 1000
result = ""
if millions > 0:
result += tafqitThreeDigits(millions) + " مليون "
if thousands > 0:
# إضافة "ألف" بدون "واحد" إذا كان العدد أكثر من 1000
result += tafqitThreeDigits(thousands) + " ألف " if thousands > 1 else "ألف "
if whole_part > 0:
result += "و " + tafqitThreeDigits(whole_part) if result else tafqitThreeDigits(whole_part)
result += " ريال" # إضافة "ريال" بعد الرقم الأساسي
# إضافة الهللات إذا كانت موجودة
if fractional_part > 0:
result += " و " + tafqitThreeDigits(fractional_part) + " هللة"
return result.strip()
# دالة لتحويل الرقم في الحقل إلى نص وعرضه
def convert_to_words(self):
try:
number = float(self.input_field.text())
result = self.tafqit(number)
self.result_field.setText(result)
except ValueError:
self.result_field.setText("الرجاء إدخال رقم صالح")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = TafqitApp()
window.show()
sys.exit(app.exec())
0 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.