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

تحويل الواجهة للعربية أي RTL لمكتبة tkinter و customtkinter

Ahmed Ahmed64

السؤال

السلام عليكم

التحقق ومراجعة الكود الخاص بقلب الواجهة للعربية أي RTL

حيث لم ينجح الكود في قلب الاتجاه 

المفترض أن يكون العمود 0 الصف 0   يمين الشاشة بعد هذا الكود

import customtkinter as ctk
import tkinter as tk
from tkinter import ttk
class App(ctk.CTk,tk.Tk):
    def __init__(self):
        super().__init__()
        ctk.set_appearance_mode("dark")
        ctk.set_default_color_theme("green")
        self.option_add('*Ttk*direction', 'rtl')
        self.Button1 = ctk.CTkButton(self, text="فتح") 
        self.Button1.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="e")
        
app = App()
app.mainloop()        

 

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

Recommended Posts

  • 0

وعليكم السلام ورحمة الله،

يمكنك استخدام الوظيفة place بدلًا من grid

import tkinter as tk
from tkinter import ttk
class App(ctk.CTk,tk.Tk):
    def __init__(self):
        super().__init__()
        
        ctk.set_appearance_mode("dark")
        ctk.set_default_color_theme("green")
        self.option_add('*Ttk*direction', 'right')
        self.Button1 = ctk.CTkButton(self, text="فتح") 
        #self.Button1.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="e")
        self.Button1.place(relx=0.9, y=10, anchor=tk.E)
        
app = App()
app.mainloop()    

لاحظ أننا استخدمنا relx = 0.9 وهذا سيجعل المسافة الأفقية تبعد عن حافة النافذة بمقدار 90%، ونلاحظ استخدام anchor=tk.E والتي تعني أن يحافظ على المسافة اليمنى لأن E تعني الشرق أي اليمين.

 

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

  • 0
بتاريخ 16 دقائق مضت قال El Sayed El Tohamy:

وعليكم السلام ورحمة الله،

يمكنك استخدام الوظيفة place بدلًا من grid

import tkinter as tk
from tkinter import ttk
class App(ctk.CTk,tk.Tk):
    def __init__(self):
        super().__init__()
        
        ctk.set_appearance_mode("dark")
        ctk.set_default_color_theme("green")
        self.option_add('*Ttk*direction', 'right')
        self.Button1 = ctk.CTkButton(self, text="فتح") 
        #self.Button1.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="e")
        self.Button1.place(relx=0.9, y=10, anchor=tk.E)
        
app = App()
app.mainloop()    

لاحظ أننا استخدمنا relx = 0.9 وهذا سيجعل المسافة الأفقية تبعد عن حافة النافذة بمقدار 90%، ونلاحظ استخدام anchor=tk.E والتي تعني أن يحافظ على المسافة اليمنى لأن E تعني الشرق أي اليمين.

 

أستاذي هل تقصد أن الكود هذا لا يستخدم مع grid

self.option_add('*Ttk*direction', 'right')

 

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

  • 0
بتاريخ 7 دقائق مضت قال Ahmed Ahmed64:

أستاذي هل تقصد أن الكود هذا لا يستخدم مع grid

لاحظ أن دعم الاتجاه من اليمين لليسار ليس متطورًا بالقدر الكافي في مكتبة tkinter، حتى في التوثيق الرسمي لها لم يذكروا شيئًا مفيدًا بخصوص هذا الموضوع، لذلك نستخدم الخصائص المتوافرة للحصول على أقرب النتائج لما نريده، على سبيل المثال السطر التالي لمحاولة جعل الأداة تنحاز لجهة اليمين حتى مع تحجيم النافذة.

بتاريخ منذ ساعة مضت قال El Sayed El Tohamy:
self.Button1.place(relx=0.9, y=10, anchor=tk.E)

أما السطر التالي، فإنه يقوم بجعل اتجاه النصوص والأيقونات على الأدوات متجهة من اليمين (بالتأكيد ليس مدعومًا لكل الأدوات)، لذلك أيضًا نستعمل الخصائص المتوافرة لدينا لحل هذه المشكلة

بتاريخ 55 دقائق مضت قال Ahmed Ahmed64:
self.option_add('*Ttk*direction', 'right')

على سبيل المثال أداة الإدخال في tk نستخدم خاصية justify لجعل الاتجاه يمين

        self.entry1 = tk.Entry(self)
        self.entry1.config(justify=tk.RIGHT)

وهكذا نحاول التغلب على القصور الموجود بالمكتبة.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...