You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
root = tk.Tk()
txt = 'السلام عليكم'
# text display incorrectly on linux
dummyvar = tk.StringVar()
dummyvar.set(txt)
tk.Label(root, textvariable=dummyvar, font='any 20').pack()
# uncomment below to set a rendered text to first label
dummyvar.set(render_bidi_text(txt))
entry = tk.Entry(root, font='any 20', justify='right')
entry.pack()
lbl = tk.Label(root, font='any 20', wraplength=300)
lbl.pack()
# adding bidi support for widgets
add_bidi_support(lbl)
add_bidi_support(entry)
# we can use set() and get() methods to set and get text on a widget
entry.set(txt)
lbl.set('لغتنا الجميلة، كان هذا عنوان إحدى البرامج الإذاعية و الذي كنا ننتظره و نتعلم كيفية نطق لغتنا العربية الأصيلة بكل ما فيها من كلمات و معاني')
root.mainloop()
الكلام مقلوب من الأسفل للأعلى عند استخدام render_text مع wraplength في label
The text was updated successfully, but these errors were encountered:
وعليكم السلام
للاسف (tkinter) لا يتعامل بحرفية مع اللغة العربية او مع اى لغة تكتب من اليمين لليسار لذلك تجد النص معكوس كما فى المثال الذى عرضته
لذلك يجب عمل معالجة كاملة للنص قبل عرضه فى الواجهة الرسومية
لحل هذه المشكلة يمكن الاستعانة بمكتبة بايثون textwrap
الكود المعدل كالتالى:
import tkinter as tk
import awesometkinter as atk
from awesometkinter.bidirender import render_bidi_text, add_bidi_support
from textwrap import wrap
root = tk.Tk()
txt = 'السلام عليكم'
# text display incorrectly on linux
dummyvar = tk.StringVar()
dummyvar.set(txt)
tk.Label(root, textvariable=dummyvar, font='any 20').pack()
# uncomment below to set a rendered text to first label
dummyvar.set(render_bidi_text(txt))
entry = tk.Entry(root, font='any 20', justify='right')
entry.pack()
lbl = tk.Label(root, font='"Droid Arabic Kufi" 20') # don't use tkinter "wraplength" here
lbl.pack()
# adding bidi support for widgets
add_bidi_support(lbl)
add_bidi_support(entry)
# we can use set() and get() methods to set and get text on a widget
entry.set(txt)
txt = 'لغتنا الجميلة, كان هذا عنوان إحدى البرامج الإذاعية و الذي كنا ننتظره و نتعلم كيفية نطق لغتنا العربية الأصيلة بكل ما فيها من كلمات و معاني'
txt = '\n'.join(wrap(txt, 40)) # wrap text with 40 character width
lbl.set(txt)
root.mainloop()
السلام عليكم
الكلام مقلوب من الأسفل للأعلى عند استخدام
render_text
معwraplength
فيlabel
The text was updated successfully, but these errors were encountered: