اذهب إلى المحتوى
  • 0

كيفية عرض النص العربي بشكل صحيح في عنصر Text في Python

عمار هبه

السؤال

لدي برنامج لكتابة نص.. لكن عند كتابة النص بالعربية تكون الحروف مقطعه ومقلوبه ..اليكم الكود ...ثم اروني الحل للمشكلة.. وكل حبي وتقديري لكم

from tkinter import *
import pyarabic.araby as araby
from awesometkinter.bidirender import add_bidi_support, render_text
import arabic_reshaper
from bidi.algorithm import get_display

# Create Object 
root = Tk() 

frame2 = Frame() 
frame2.pack(pady=10) 

address = Text(frame2,width=37,height=10) 
address.pack() 
add_bidi_support(address)
#address
root.mainloop()
تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

المشكلة في الكود هي أنك لم تقم بتحويل النص العربي إلى صيغة bidi قبل عرضه في عنصر Text وإحدى الطرق لفعل ذلك هو استخدام مكتبة PyArabic كالتالي:

from tkinter import *
import pyarabic.araby as araby

# Create Object
root = Tk()
frame2 = Frame()
frame2.pack(pady=10)
address = Text(frame2, width=37, height=10)
address.pack()

# Convert Arabic text to bidi
text = "مرحبا بكم في موقعنا"
bidi_text = araby.to_bidi(text)

# Display bidi text
address.insert(END, bidi_text)

add_bidi_support(address)

#address
root.mainloop()

أو من الممكن الإعتماد على مكتبة أخرى مثل arabic_reshaper كالتالي:

from tkinter import *
import arabic_reshaper

# Create Object
root = Tk()
frame2 = Frame()
frame2.pack(pady=10)
address = Text(frame2, width=37, height=10)
address.pack()

# Convert Arabic text to bidi
text = "مرحبا بكم في موقعنا"
bidi_text = arabic_reshaper.reshape(text)

# Display bidi text
address.insert(END, bidi_text)

add_bidi_support(address)

#address
root.mainloop()

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال Mustafa Suleiman:

المشكلة في الكود هي أنك لم تقم بتحويل النص العربي إلى صيغة bidi قبل عرضه في عنصر Text وإحدى الطرق لفعل ذلك هو استخدام مكتبة PyArabic كالتالي:

from tkinter import *
import pyarabic.araby as araby

# Create Object
root = Tk()
frame2 = Frame()
frame2.pack(pady=10)
address = Text(frame2, width=37, height=10)
address.pack()

# Convert Arabic text to bidi
text = "مرحبا بكم في موقعنا"
bidi_text = araby.to_bidi(text)

# Display bidi text
address.insert(END, bidi_text)

add_bidi_support(address)

#address
root.mainloop()

أو من الممكن الإعتماد على مكتبة أخرى مثل arabic_reshaper كالتالي:

from tkinter import *
import arabic_reshaper

# Create Object
root = Tk()
frame2 = Frame()
frame2.pack(pady=10)
address = Text(frame2, width=37, height=10)
address.pack()

# Convert Arabic text to bidi
text = "مرحبا بكم في موقعنا"
bidi_text = arabic_reshaper.reshape(text)

# Display bidi text
address.insert(END, bidi_text)

add_bidi_support(address)

#address
root.mainloop()

 

لم تفلح

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

واجهت هذه المشكلة من قبل، الحلول تختلف من كمبيوتر لآخر، أحد الحلول التي اشتغلت معي هي تغيير طريقة التشفير لواحدة تقبل اللغة العربية و المستخدمة حاليا هي UTF-8:

يمكنك تجربة الكود التالي مع التغيير البسيط الذي أحدثته لأنه اشتغل معي بهذه الطريقة:
 

# -*- coding: UTF-8 -*-
from tkinter import *
from awesometkinter.bidirender import add_bidi_support

# Create Object
root = Tk()

frame2 = Frame()
frame2.pack(pady=10)

address = Text(frame2,width=37,height=10)
address.pack()
add_bidi_support(address)
#address
root.mainloop()

Screenshot2023-11-08172031.thumb.png.ae548aa82df8ba952d4aa6f104f8a6e1.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...