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

السؤال

نشر

السلام عليكم

كيفه نطبق خصائص 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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...