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

طريقة كتابة خصائص CTkFrame من كلاس

Ahmed Ahmed64

السؤال

السلام عليكم

كيفه نطبق خصائص CTkFrame  مثل border_width أو border_color  على كود مكتوب بهذه الكيفية 

حاولت ولاكن لم تنجح

الرجاء التوضيح لو سمحتم

import customtkinter

class Frame1(customtkinter.CTkFrame):
    def __init__(self, master,border_color,border_width,fg_color):
        super().__init__(master)
        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w")

class Frame2(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1")
        self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")

class Frame3(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("my app")
        self.geometry("400x180")
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)
 
        self.Frame_A = Frame1(self,"red",10,"red")
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_B = Frame2(self)
        self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_C = Frame3(self)
        self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe")

app = App()
app.mainloop()

 

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

Recommended Posts

  • 0

يمكنك ذلك باستخدام الميثود configure و ذلك بإستخادم المدخلات الخاصة بك و هذا كود ال Frame1 معدل و يمكنك تعديل باقي الكود بنفس الطريقة:

class Frame1(customtkinter.CTkFrame):
    def __init__(self, master, border_color, border_width, fg_color):
        super().__init__(master)
        self.configure(border_width=border_width,border_color=border_color,fg_color=fg_color)
        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w")

و هذه صورة للنتيجة:

Screenshot2023-12-27193843.png.5fc5346fe880f72277ed61cd57d9e46a.png

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

  • 0
بتاريخ 6 دقائق مضت قال Chihab Hedidi:

يمكنك ذلك باستخدام الميثود configure و ذلك بإستخادم المدخلات الخاصة بك و هذا كود ال Frame1 معدل و يمكنك تعديل باقي الكود بنفس الطريقة:

class Frame1(customtkinter.CTkFrame):
    def __init__(self, master, border_color, border_width, fg_color):
        super().__init__(master)
        self.configure(border_width=border_width,border_color=border_color,fg_color=fg_color)
        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w")

و هذه صورة للنتيجة:

Screenshot2023-12-27193843.png.5fc5346fe880f72277ed61cd57d9e46a.png

أحسنت أخي بارك الله فيك

إذا يجب إستخدام configure لذلك

سؤال لماذا لايتم التمرير مباشرة داخل كلاس class App وهل يمكن ذلك

self.Frame_A = Frame1(self)
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")

 

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

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

أحسنت أخي بارك الله فيك

إذا يجب إستخدام configure لذلك

سؤال لماذا لايتم التمرير مباشرة داخل كلاس class App وهل يمكن ذلك

في المثال الذي ارسلته قمت بالتمرير من داخل class App مثل الكود الذي كان موجود:

self.Frame_A = Frame1(self, "red", 3, "blue")

و هذا الكود كامل اذا اردت تجربه:

import customtkinter


class Frame1(customtkinter.CTkFrame):
    def __init__(self, master, border_color, border_width, fg_color):
        super().__init__(master)
        self.configure(border_width=border_width,border_color=border_color,fg_color=fg_color)
        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w")


class Frame2(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1")
        self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")


class Frame3(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")


class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("my app")
        self.geometry("400x180")
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        self.Frame_A = Frame1(self, "red", 3, "blue")
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_B = Frame2(self)
        self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_C = Frame3(self)
        self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe")


app = App()
app.mainloop()


 

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

  • 0
بتاريخ 10 دقائق مضت قال Chihab Hedidi:

في المثال الذي ارسلته قمت بالتمرير من داخل class App مثل الكود الذي كان موجود:

self.Frame_A = Frame1(self, "red", 3, "blue")

و هذا الكود كامل اذا اردت تجربه:

import customtkinter


class Frame1(customtkinter.CTkFrame):
    def __init__(self, master, border_color, border_width, fg_color):
        super().__init__(master)
        self.configure(border_width=border_width,border_color=border_color,fg_color=fg_color)
        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w")


class Frame2(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1")
        self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")


class Frame3(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")


class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("my app")
        self.geometry("400x180")
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        self.Frame_A = Frame1(self, "red", 3, "blue")
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_B = Frame2(self)
        self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_C = Frame3(self)
        self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe")


app = App()
app.mainloop()


 

أخي من الممكن أن سؤالي كان غير مفهوم لديك

أقصد لماذا لم أمرر من خلال class App

بحيث كتب مثلا  border_color = " red 

لدي سؤال أخر 

كيف أستطيع أن أجعل واجهة التطبيق تقرأ العمود 0 من ناحية اليمين وليس الشمال

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

تم التعديل في بواسطة Ahmed Ahmed64
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

أخي من الممكن أن سؤالي كان غير مفهوم لديك

أقصد لماذا لم أمرر من خلال class App

بحيث كتب مثلا  border_color = " red 

لدي سؤال أخر 

كيف أستطيع أن أجعل واجهة التطبيق تقرأ العمود 0 من ناحية اليمين وليس الشمال

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

نعم يمكنك ذلك بحدث الكود من داخل Fram1 و تكتبه داخل App بهذه الطريقة:
 

import customtkinter


class Frame1(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)

        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w")


class Frame2(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1")
        self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")


class Frame3(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")


class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("my app")
        self.geometry("400x180")
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        self.Frame_A = Frame1(self)
        self.Frame_A.configure(border_color="red", border_width=3 ,fg_color="blue")
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_B = Frame2(self)
        self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_C = Frame3(self)
        self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe")


app = App()
app.mainloop()

 اما بخصوص التعريب يمكنك استخدام الميثود pack كهذا المثال:
 

self.button1.pack(side="right")

 

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

  • 0
بتاريخ 9 دقائق مضت قال Chihab Hedidi:

نعم يمكنك ذلك بحدث الكود من داخل Fram1 و تكتبه داخل App بهذه الطريقة:
 

import customtkinter


class Frame1(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)

        self.button1 = customtkinter.CTkButton(self, text="إختيار ملف",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w")


class Frame2(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1")
        self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")


class Frame3(customtkinter.CTkFrame):
    def __init__(self, master):
        super().__init__(master)
        self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled",
                                               font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"))
        self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w")


class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.title("my app")
        self.geometry("400x180")
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        self.Frame_A = Frame1(self)
        self.Frame_A.configure(border_color="red", border_width=3 ,fg_color="blue")
        self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_B = Frame2(self)
        self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe")
        self.Frame_C = Frame3(self)
        self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe")


app = App()
app.mainloop()

 اما بخصوص التعريب يمكنك استخدام الميثود pack كهذا المثال:
 

self.button1.pack(side="right")

 

لدي هذا الخطأ 

tkinter.TclError: cannot use geometry manager grid inside .!frame1 which already has slaves managed by pack

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

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

لدي هذا الخطأ 

tkinter.TclError: cannot use geometry manager grid inside .!frame1 which already has slaves managed by pack

الكود الذي ارسلته يشتغل بدون اي مشاكل،
اذا قمت بتعديل آخر أرسل الكود الجديد.

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...