Ali Ali49 نشر 6 يونيو 2023 أرسل تقرير نشر 6 يونيو 2023 (معدل) مالخطأ بهذا الكود أولا كود ( class ) from openpyxl import load_workbook class book_E: def __init__(self, BATH=None): self.BATH = BATH self.workbook = None self.sheet = None def load_file(self): if self.BATH: self.workbook = load_workbook(self.BATH) self.sheet = self.workbook.active def column_values(self): self.column_values_list = [cell.value for cell in self.sheet['A']] return self.column_values_list def on_combobox_selected(self,combo,AM): self.combo = combo self.AM = AM selected_value = self.combo.get() row_index = self.column_values_list.index(selected_value) + 1 corresponding_value = self.sheet[self.AM + str(row_index)].value print(corresponding_value) ثانيا كود البرنامج from ttkbootstrap.constants import * import ttkbootstrap as ttk from LOOD_BOOK import book_E BOOK1 = book_E() column_values = "1" def COLS_V(): file_path = "E:\people.xlsx" BOOK1 = book_E(file_path) BOOK1.load_file() combo_name.configure(values=BOOK1.column_values()) def sheet_Names(BOOK1): q = BOOK1.workbook.sheetnames return q def COL1_V(BOOK1): q = BOOK1.sheet['A2'].value #-------------------------------------------------------------------------------------------- def on_combo_name_selected(event): BOOK1.on_combobox_selected(combo_name,"a") #-------------------------------------------------------------------------------------------- root = ttk.Window(themename="minty") frame = ttk.Frame(root) frame.pack() widgets_frame = ttk.LabelFrame(frame, text="طباعة") widgets_frame.grid(row=0, column=0, padx=20, pady=5, sticky="nsew") b1 = ttk.Button(widgets_frame, text="print", bootstyle=("info", "outline"), command=COLS_V) b1.grid(row=0, column=0, padx=5, pady=5, sticky="ew") combo_name = ttk.Combobox(widgets_frame,justify=RIGHT,width=35,values=column_values) combo_name.current(0) combo_name.grid(row=1, column=0, padx=5, pady=5, sticky="ew") combo_name.bind("<<ComboboxSelected>>", on_combo_name_selected) root.mainloop() هذا الخطأ AttributeError: 'book_E' object has no attribute 'column_values_list' تم التعديل في 6 يونيو 2023 بواسطة Ali Ali49 1 اقتباس
0 Mustafa Suleiman نشر 6 يونيو 2023 أرسل تقرير نشر 6 يونيو 2023 إذا كان السؤال تابع لأحد الأسئلة الخاصة بك أرجو وضعه أسفل السؤال وسيتم الرد عليك لا تقلق، وبخصوص سؤالك، في السطر التالي: from LOOD_BOOK import book_E هل أخطأت في اسم الملف؟ حيث أنك قمت بتهجئتها على أنها "LOOD_BOOK" بدلاً من "LOAD_BOOK"، تأكد من أن اسم الملف صحيح. وفي السطر: from ttkbootstrap.constants import * يتم استيراد جميع الثوابت من وحدة ttkbootstrap.constants. ولكن الوحدة ttkbootstrap لا توفر هذه الثوابت، والأفضل الاستيراد كالتالي: from tkinter import ttk وفي السطر التالي: b1 = ttk.Button(widgets_frame, text="print", bootstyle=("info", "outline"), command=COLS_V) الخاصية bootstyle ليست خاصية صحيحة.، هل أنت ترغب في تعيين نمط الزر؟ باستطاعتك استخدام الخاصية style بدلاً من ذلك كالتالي: b1 = ttk.Button(widgets_frame, text="print", style="info.Outline.TButton", command=COLS_V) وفي السطر التالي: combo_name = ttk.Combobox(widgets_frame,justify=RIGHT,width=35,values=column_values) لم يتم تعريف المتغير column_values في هذا المكان، وعليك تعريفه كمتغير عالمي أو تمرير قيمة صحيحة للوظيفة ttk.Combobox أي التعديل لما يلي: combo_name = ttk.Combobox(widgets_frame, justify="right", width=35) اقتباس
0 Ali Ali49 نشر 6 يونيو 2023 الكاتب أرسل تقرير نشر 6 يونيو 2023 لقد تحققت من المتغيرات والأحرف أخي هل لك بتجريب الكود والتعديل عليه : سأرسل لك ملف البرنامج CLASS_1.rar اقتباس
0 Mustafa Suleiman نشر 6 يونيو 2023 أرسل تقرير نشر 6 يونيو 2023 هناك مشكلة في السطر التالي: self.column_values_list = [cell.value for cell in self.sheet['A']] ففي الدالة column_values() في صنف book_E، الخطأ الذي يحدث هو AttributeError: 'book_E' object has no attribute 'column_values_list'. وذلك لأنك تحاول تعيين قائمة column_values_list كخاصية للكائن self، ولكن لم تقم بتعريفها كمتغير عضو في الكلاس book_E. عليك بتعريف المتغير column_values_list كمتغير عضو في الدالة __init__ كالتالي: def __init__(self, BATH=None): self.BATH = BATH self.workbook = None self.sheet = None self.column_values_list = [] # تعريف المتغير كمتغير عضو في الكلاس بعد ذلك، تستطيع استخدام المتغير self.column_values_list في الدالة column_values() بدون أن تحدث الأخطاء. تأكد أيضًا من استيراد load_workbook من الوحدة الصحيحة openpyxl. 1 اقتباس
0 Ali Ali49 نشر 6 يونيو 2023 الكاتب أرسل تقرير نشر 6 يونيو 2023 أخي الرجاء إرسال الملف بعد تعديلك له ,, لم ينجح الأمر لدي اقتباس
0 Mustafa Suleiman نشر 6 يونيو 2023 أرسل تقرير نشر 6 يونيو 2023 قمت بتعديل المشروع لك ورفعه بعد التعديل، عليك فقط تعديل المسار لملف people.xlsx الذي أنشأته وبه بيانات تجريبية فقط، وستقوم بتعديل المسار في ملف MINE.py وتغيير اسم المستخدم إلى اسم المستخدم الخاص بحاسوبك، حيث افترضت أن مجلد المشروع موجود لديك على سطح المكتب. file_path = r"C:\Users\اسم المستخدم هنا\Desktop\CLASS_1\people.xlsx" # المسار الذي تريده CLASS_1.rar 1 اقتباس
0 Ali Ali49 نشر 6 يونيو 2023 الكاتب أرسل تقرير نشر 6 يونيو 2023 (معدل) أسف أخي لقد أكثرت عليك بالأسئلة و أشكرك على رحب صدرك لاكن المشكلة لا زالت قائمة ( أخي لكي تتضح لك المشكلة شغل البرنامج ومن ثم إضغط الزر عندها سوف تكون لديك قائمة داخل القائمة المنسدلة إختر إحداها ، هنا سوف يظهر لديك خطأ ( كيف أستطيع إصلاح هذا الخطأ ) وهذا الذي ذكرته لك مسبقاً والخطأ يحدث هنا على ما أعتقد print(corresponding_value) قم بتجربة الكود والتحقق من الخطأ أخي def on_combobox_selected(self, combo, AM): self.combo = combo self.AM = AM selected_value = self.combo.get() # القيمة المحددة من القائمة المنسدلة row_index = self.column_values_list.index(selected_value) + 1 # +1 لأن الصفوف تبدأ من 1 وليس 0 corresponding_value = self.sheet[self.AM + str(row_index)].value # افتراضًا العمود الثاني (B) print(corresponding_value) تم التعديل في 6 يونيو 2023 بواسطة Ali Ali49 اقتباس
0 Ali Ali49 نشر 7 يونيو 2023 الكاتب أرسل تقرير نشر 7 يونيو 2023 لقد إجتهدت ولاكن دون فائدة لمعرفة أين الخطأ أرجو المساعدة في ذلك اقتباس
0 Mustafa Suleiman نشر 7 يونيو 2023 أرسل تقرير نشر 7 يونيو 2023 أرجو منك الإنتباه، حيث أنك وضعت قيمة إفتراضية في ملف MINE.py بقيمة 1 للمتغير column_values وعند تشغيل البرنامج ستجد في القائمة رقم واحد بشكل إفتراضي وتلك القيمة غير موجودة في ملف إكسيل الذي ارفقته لك بالطبع. ويجب تغيير قيمة المتغير column_values كالتالي: column_values = "test" ثم شغل البرنامج وعند الضغط على print سيتم طباقة القيم الموجودة في العمود الأول. اقتباس
0 Ali Ali49 نشر 7 يونيو 2023 الكاتب أرسل تقرير نشر 7 يونيو 2023 المشكلة باقية حتى لو عدلت قيمة column_values = "test" عند ضغط زر الطباعة تجاهل القيمة الأولي والتي تظهر كما حدتها أنا سابقا بقيمة 1 والأن بعد تعديلك بقيمة test وإختر أي قيمة أخرى يظهر لك الخطأ ValueError: 'salem' is not in list اقتباس
0 Mustafa Suleiman نشر 7 يونيو 2023 أرسل تقرير نشر 7 يونيو 2023 هل يمكنك استخدام الكود الخاص بي في المرفقات؟ CLASS_1.rar اقتباس
0 Ali Ali49 نشر 7 يونيو 2023 الكاتب أرسل تقرير نشر 7 يونيو 2023 (معدل) بتاريخ 20 دقائق مضت قال Mustafa Suleiman: هل يمكنك استخدام الكود الخاص بي في المرفقات؟ CLASS_1.rar 8.59 kB · 0 تنزيلات عند التجريب نفس المشكلة ValueError: 'test' is not in list أرفقت لك ملف الإكسل الخاص بي people.xlsx تم التعديل في 7 يونيو 2023 بواسطة Ali Ali49 اقتباس
0 Mustafa Suleiman نشر 7 يونيو 2023 أرسل تقرير نشر 7 يونيو 2023 بالطبع يظهر لك الخطأ عليك باستخدام ملف إكسيل الذي أرفقته لك في مجلد المشروع وليس ملفك أنت، وقم بالتجربة. اقتباس
0 Ali Ali49 نشر 7 يونيو 2023 الكاتب أرسل تقرير نشر 7 يونيو 2023 (معدل) بتاريخ 30 دقائق مضت قال Mustafa Suleiman: بالطبع يظهر لك الخطأ عليك باستخدام ملف إكسيل الذي أرفقته لك في مجلد المشروع وليس ملفك أنت، وقم بالتجربة. فعلا أخي لقد إستخدمت ملفك الخاص كا موضح لك بالصور بالأعلى والخطأ الذي يظهر المشكلة ليست في ظهور القائمة العمود A في القائمة المنسدلة ولاكن المشكلة عند إختيار خيار من القائمة المنسدلة لطباعة القيمة المقابلة للعمود A إلا هوا حاليا وضعت العمود B هنا تظهر رسالة الخطأ هل لك أن تقوم بتعديل على الأكواد بحيث عند تشغيل البرنامج تكون أداة الكومبوبكس خالية من القيم إلى حين الضغط على زر لتحميل القائمة بها ومن ثم أقوم [ بإخيار قيمة منها لطباعة القيمة المقابلة لها من الجدول ] هذه النتيجة التي أريد أن أصل لها حالياً ( قيمة العمود B المقابلة للعمود A ) تم التعديل في 7 يونيو 2023 بواسطة Ali Ali49 اقتباس
السؤال
Ali Ali49
مالخطأ بهذا الكود
أولا كود ( class )
ثانيا كود البرنامج
هذا الخطأ
AttributeError: 'book_E' object has no attribute 'column_values_list'
تم التعديل في بواسطة Ali Ali4913 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.