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

Ali Ali49

الأعضاء
  • المساهمات

    26
  • تاريخ الانضمام

  • تاريخ آخر زيارة

آخر الزوار

لوحة آخر الزوار معطلة ولن تظهر للأعضاء

إنجازات Ali Ali49

عضو مساهم

عضو مساهم (2/3)

7

السمعة بالموقع

  1. إخي بارك الله فيك تمام الكود يعمل كما كنت إريد لنفترض أني قمت بالتعديل التالي أين الخطأ الأن from openpyxl import load_workbook import ttkbootstrap as ttk from tkinter import filedialog class load_document: 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 BOOK1 = load_document() column_values=() def COLS_V(): # اختيار الملف file_path = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes= (("text files","*.xlsx"),("all files","*.*"))) BOOK1 = load_document(file_path) BOOK1.load_file() def COLS_V2(): global column_values column_values = BOOK1.workbook.sheetnames # تحديث قيم Combobox combo['values'] = column_values # أدوات الواجهة 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="إختر الملف", bootstyle=("info", "outline"), command=COLS_V) b1.grid(row=0, column=0, padx=5, pady=5, sticky="ew") b2 = ttk.Button(widgets_frame, text="إدرج أوراق العمل للقائمة", bootstyle=("info", "outline"), command=COLS_V2) b2.grid(row=1, column=0, padx=5, pady=5, sticky="ew") #----------------------------------------------------------- combo = ttk.Combobox(widgets_frame, values=column_values) combo.grid(row=2, column=0, padx=5, pady=5, sticky="ew") root.mainloop()
  2. السلام عليكم الرجاء تصحيح كتابة الكود حيث أريد جلب إسم إوراق العمل من ملف الإكسل إلى أداة Combobox عند إختيار الملف الكود الأول ملف كلاس مستقل from openpyxl import load_workbook class load_document: 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 كود البرنامج import ttkbootstrap as ttk from ttkbootstrap.constants import * from openpyxl import load_workbook from pathlib import Path from tkinter import filedialog from L_Documents import load_document BOOK1 = load_document() column_values=() def COLS_V(): file_path = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes= (("text files","*.xlsx"),("all files","*.*"))) BOOK1 = load_document(file_path) BOOK1.load_file() column_values = BOOK1.workbook.sheetnames # أدوات الواجهة 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="إختر الملف", bootstyle=("info", "outline"), command=COLS_V) b1.grid(row=0, column=0, padx=5, pady=5, sticky="ew") #----------------------------------------------------------- combo = ttk.Combobox(widgets_frame, values=column_values) combo.grid(row=2, column=0, padx=5, pady=5, sticky="ew") root.mainloop()
  3. فعلا أخي لقد إستخدمت ملفك الخاص كا موضح لك بالصور بالأعلى والخطأ الذي يظهر المشكلة ليست في ظهور القائمة العمود A في القائمة المنسدلة ولاكن المشكلة عند إختيار خيار من القائمة المنسدلة لطباعة القيمة المقابلة للعمود A إلا هوا حاليا وضعت العمود B هنا تظهر رسالة الخطأ هل لك أن تقوم بتعديل على الأكواد بحيث عند تشغيل البرنامج تكون أداة الكومبوبكس خالية من القيم إلى حين الضغط على زر لتحميل القائمة بها ومن ثم أقوم [ بإخيار قيمة منها لطباعة القيمة المقابلة لها من الجدول ] هذه النتيجة التي أريد أن أصل لها حالياً ( قيمة العمود B المقابلة للعمود A )
  4. عند التجريب نفس المشكلة ValueError: 'test' is not in list أرفقت لك ملف الإكسل الخاص بي people.xlsx
  5. المشكلة باقية حتى لو عدلت قيمة column_values = "test" عند ضغط زر الطباعة تجاهل القيمة الأولي والتي تظهر كما حدتها أنا سابقا بقيمة 1 والأن بعد تعديلك بقيمة test وإختر أي قيمة أخرى يظهر لك الخطأ ValueError: 'salem' is not in list
  6. لقد إجتهدت ولاكن دون فائدة لمعرفة أين الخطأ أرجو المساعدة في ذلك
  7. أسف أخي لقد أكثرت عليك بالأسئلة و أشكرك على رحب صدرك لاكن المشكلة لا زالت قائمة ( أخي لكي تتضح لك المشكلة شغل البرنامج ومن ثم إضغط الزر عندها سوف تكون لديك قائمة داخل القائمة المنسدلة إختر إحداها ، هنا سوف يظهر لديك خطأ ( كيف أستطيع إصلاح هذا الخطأ ) وهذا الذي ذكرته لك مسبقاً والخطأ يحدث هنا على ما أعتقد 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)
  8. أخي الرجاء إرسال الملف بعد تعديلك له ,, لم ينجح الأمر لدي
  9. لقد تحققت من المتغيرات والأحرف أخي هل لك بتجريب الكود والتعديل عليه : سأرسل لك ملف البرنامج CLASS_1.rar
  10. مالخطأ بهذا الكود أولا كود ( 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'
  11. عفوا أخي هل يبقى هذا الكود أعلى البرنامج أم يحذف , إذا حذف هذا الكود يقف البرنامج لإرتباط باقي الدوال بالمتغير BOOK1 BOOK1 = book_E('E:\people.xlsx') إستفسار أخر أين يتم وضع مكان هذا الكود column_values = BOOK1.column_values() أخي هل لك أن تعيد لي الكود كامل لأقوم بتجريبه لدي: الكود إنضرب لم يعمل لدي بعد التعديلات التي أخبرتني عنها
  12. السلام عليكم أستخدم لغة python أشكر كل من ساعدني مسبقاً في هذا الصرح العلمي الذي منه في الحقيقة إستفدت منه كثيراً أحبتي لدي هذا الكود ومحتاج به تعديل ولاكن جميع محولاتي لم تنجح عند عمل البرنامج الملف يتم تحميله عند التشغيل والذي موجود بهذا السطر BOOK1 = book_E('E:\people.xlsx') أحتاج أن يكون داخل زر ( Button ) في البداية هذا ملف الكلاس from openpyxl import load_workbook class book_E: def __init__(self, BATH): self.BATH = BATH self.workbook = load_workbook(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('D:\ABC.xlsx') column_values = "1" def COLS_V(BOOK1): combo_name.configure(values=BOOK1.column_values()) 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=lambda:COLS_V(BOOK1)) 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() أحتاج كما أخبرتكم أن يكون تحميل الملف من خلال Button وأحتاج أيضاً تعديل في المتغير column_values كيف يتم معالجته بما تراه مناسب
  13. أشكر أخي ( لقد فهمت الأن سبب المشكلة ) في الحقيقة أخي أنا أتعلم من هذه الأخطاء التي تحدث . طلب أخر أخي أنا فعلا لأحتاج أن أطبع def COLS_V(BOOK1): B = BOOK1.column_values() print(B ولكن وضعتها لأرى عمل الكود ولاكن أنا أحتاج أن ينفذ الكود داخل أداة combobox in tkinter عند الضغط على الزر تتحمل list بالكود السابق إلى هذه الأداة هل ينفع الأمر هكذا column_values = "" def COLS_V(BOOK1): q = BOOK1.column_values() column_values = q b1 = ttk.Button(widgets_frame, text="print", bootstyle=("info", "outline"),command=lambda:COLS_V(BOOK1)) 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") ما الكود السليم في هذه الحالة؟ أشكر مساعدتكم
  14. أشكرك جزيل الشكر إستفسار لو سمحت ( ما وظيفة lambda ) قمت بمراجعة التعديلات وحدثت معي مشكلة وهي في البداية وعند الضغط للمرة الأولى على الزر يعمل الكود ولايوجد مشكلة ولاكن عند الضغط على الزر من جديد تحدث هنا المشكلة السؤال هنا لماذا تحدث هذه المشكلة؟ هذا نص الخطأ TypeError: 'list' object is not callable
  15. السلام عليكم من فضلكم أحتاج مراجعة لهذا الكود في البداية قمت بإنشاء هذا الكلاس from openpyxl import load_workbook class book_E: def __init__(self, BATH): self.BATH = BATH self.workbook = load_workbook(BATH) self.sheet = self.workbook.active def column_values(self): # استخراج قيم العمود الأول من ورقة العمل وتخزينها في قائمة: self.column_values = [cell.value for cell in self.sheet['A']] return self.column_values من ثم في صفحة البرنامج قم بإنشاء هذا الكود from ttkbootstrap.constants import * import ttkbootstrap as ttk from LOOD_BOOK import book_E BOOK1 = book_E('d:\abc.xlsx') def sheet_Names(BOOK1): A = BOOK1.workbook.sheetnames return q def COLS_V(BOOK1): B = BOOK1.column_values() print(q) def COL1_V(BOOK1): C = BOOK1.sheet['A2'].value #-------------------------------------------------------------------------------------------- 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(BOOK1)) b1.grid(row=0, column=0, padx=5, pady=5, sticky="ew") root.mainloop() المشكلة التي تحدث أنه قبل الضغط على الزر طباعة في واجهة البرنامج البرنامج يقوم بتنفيذ الأمر وحده عند تشغيل البرنامج داخل TERMINAL أين الخطأ في ذلك أحبتي
×
×
  • أضف...