Ahmed Ahmed64 نشر 28 ديسمبر 2023 أرسل تقرير نشر 28 ديسمبر 2023 السلام عليكم إخوتي لدي هذا الكلاس class Frame2(customtkinter.CTkFrame): def __init__(self, master, border_color, border_width): super().__init__(master) self.configure(border_width=border_width,border_color=border_color) self.df = None def LoadFile(): filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"), ("all files", "*.*"))) filepathA = Path(filepath) self.df = pd.ExcelFile(filepathA) def optionmenu_callback(choice): #print("optionmenu dropdown clicked:", choice) self.label2.configure(text=choice) self.optionmenu1.configure(values = self.sht(),command=optionmenu_callback) self.button1 = customtkinter.CTkButton(self, text="إختيار ملف", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"), command=LoadFile) self.button1.grid(row=0, column=1, padx=(10, 10), pady=(10, 10), sticky="nw") self.optionmenu1 = customtkinter.CTkOptionMenu(self,values=["إختر ورقة العمل"], font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold")) self.optionmenu1.grid(row=0, column=0, padx=(10, 10), pady=(10, 10), sticky="nw") self.label2 = customtkinter.CTkLabel(self, text="", text_color="#0087f2", font=customtkinter.CTkFont(family="Calibri", size=14, weight="bold")) self.label2.grid(row=1, column=0, padx=(10, 10), pady=(10, 10), sticky="nw") self.label3 = customtkinter.CTkLabel(self, text="إسم ورقة العمل المختارة :", fg_color="transparent", font=customtkinter.CTkFont(family="Calibri", size=14, weight="bold")) self.label3.grid(row=1, column=1, padx=(10, 10), pady=(10, 10), sticky="nw") def sht(self): AD = self.df.sheet_names return AD ولدي هذا الكلاس class Frame4(customtkinter.CTkFrame): def __init__(self, master, border_color, border_width): super().__init__(master) self.configure(border_width=border_width,border_color=border_color) def cooll(): selected_column_1 = self.df.iloc[8::2, [0,1,2,3,4,5,6]] selected_column_1.reset_index(drop=True, inplace=True) A = pd.DataFrame(selected_column_1) print(A) self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1") self.checkbox_1.grid(row=0, column=0, padx=(10, 10), pady=(10, 10), sticky="news") self.button3 = customtkinter.CTkButton(self, text="طباعة العمود", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"),command=cooll) self.button3.grid(row=1, column=0, padx=(10, 10), pady=(10, 10), sticky="nw") السؤال كيف أصل إلى الكلاس الأول من داخل الكلاس الثاني مثلا أريد أن أصل إلى self.df الموجودة في الكلاس الأول داخل الكلاس الثاني 1 اقتباس
0 محمد سعد شحرور نشر 28 ديسمبر 2023 أرسل تقرير نشر 28 ديسمبر 2023 بشكل عام، يمكنك الوصول الى خاصة ضمن class1 في class2 عن طريق انشاء مرجع في class2 تدل الى class1. أي أنه عليك انشاء مرجع لل frame2 لل frame4 للوصول الى خاصة ال df: class Frame4(customtkinter.CTkFrame): # عرف مرجع للكلاس الأول هنا def __init__(self, master, border_color, border_width, frame2_instance): super().__init__(master) self.configure(border_width=border_width, border_color=border_color) # قم بتخزين قيمة هذا المرجع self.frame2_instance = frame2_instance # باقي الكود الخاص بك بعد ذلك تعطي المرجع قيمة، وهي نسخة من ال frame2 لتستطيع الوصول الى كافة خواص ال frame2 ضمن ال frame4: frame2_instance = Frame2(master, border_color, border_width) frame4_instance = Frame4(master, border_color, border_width, frame2_instance) اقتباس
0 Ahmed Ahmed64 نشر 28 ديسمبر 2023 الكاتب أرسل تقرير نشر 28 ديسمبر 2023 بتاريخ 28 دقائق مضت قال محمد سعد شحرور: بشكل عام، يمكنك الوصول الى خاصة ضمن class1 في class2 عن طريق انشاء مرجع في class2 تدل الى class1. أي أنه عليك انشاء مرجع لل frame2 لل frame4 للوصول الى خاصة ال df: class Frame4(customtkinter.CTkFrame): # عرف مرجع للكلاس الأول هنا def __init__(self, master, border_color, border_width, frame2_instance): super().__init__(master) self.configure(border_width=border_width, border_color=border_color) # قم بتخزين قيمة هذا المرجع self.frame2_instance = frame2_instance # باقي الكود الخاص بك بعد ذلك تعطي المرجع قيمة، وهي نسخة من ال frame2 لتستطيع الوصول الى كافة خواص ال frame2 ضمن ال frame4: frame2_instance = Frame2(master, border_color, border_width) frame4_instance = Frame4(master, border_color, border_width, frame2_instance) هل من توضيح أكثر أخي 1 اقتباس
0 محمد سعد شحرور نشر 28 ديسمبر 2023 أرسل تقرير نشر 28 ديسمبر 2023 بتاريخ 1 ساعة قال Ahmed Ahmed64: هل من توضيح أكثر أخي هذا مثال عام عن ذات الفكرة في الوراثة في لغة بايثون ليسهل عليك فهمها وتطبيقها في مثالك: class ClassA: def __init__(self, value): self.value = value class ClassB: # تعريف متغير يسمى مرجع سيحمل قيمة من الصنف السابق def __init__(self, class_a_instance): self.class_a_instance = class_a_instance # تعريف تابع يقوم بطباعة هذه القيمة من الضنف السابق def access_property(self): print("Value from ClassA:", self.class_a_instance.value) # انشاء مثال للصنف الأول واعطائه قيمة obj_a = ClassA(value=1) # انشاء مثال للضنف الثاني وتمرير المثال السابق اليه ليصبح الصنف الثاني قادر على الوصول الى قيمة ال 1 obj_b = ClassB(class_a_instance=obj_a) # طباعة ال 1 من الصنف الثاني بعد تمريرها من الصنف الأول obj_b.access_property() 1 اقتباس
0 Ahmed Ahmed64 نشر 28 ديسمبر 2023 الكاتب أرسل تقرير نشر 28 ديسمبر 2023 في الحقيقة الأمر صعب ولم أفهم طريقة شرح الكود أخي هل من شرح على الكود الخاص بي لتضح لي الفكرة أكثر وجزاك الله خيراَ اقتباس
0 محمد سعد شحرور نشر 29 ديسمبر 2023 أرسل تقرير نشر 29 ديسمبر 2023 بتاريخ On 28/12/2023 at 15:58 قال Ahmed Ahmed64: في الحقيقة الأمر صعب ولم أفهم طريقة شرح الكود أخي هل من شرح على الكود الخاص بي لتضح لي الفكرة أكثر وجزاك الله خيراَ صديقي كل ما عليك هو أن تنشأ نسختين (مثالين) من الصنفين الخاصين بك، وأن تممر أحدى النسخ (الأمثلة) الى النسخة (المثال) الاخر. بعد ذلك تذهب الى الصنف الثاني الذي تم تمرير النسخة اليه وتصل الى هذه العناصر التي تم تمريرها. أرجو منك قراءة التعليقات الخاصة بي بتمعن وتجربتها لديك، ويمكنك رؤية هذا الجواب أيضا بأسلوب اخر. اقتباس
السؤال
Ahmed Ahmed64
السلام عليكم
إخوتي لدي هذا الكلاس
ولدي هذا الكلاس
السؤال كيف أصل إلى الكلاس الأول من داخل الكلاس الثاني
مثلا أريد أن أصل إلى self.df الموجودة في الكلاس الأول داخل الكلاس الثاني
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.