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

السؤال

نشر (معدل)

السلام عليكم

أستخدم لغة 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 كيف يتم معالجته بما تراه مناسب

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 0
نشر

في الكلاس book_E، عليك بتعديل الدالة __init__ لتستقبل المسار كمعامل افتراضي بدلاً من استخدام القيمة المباشرة:

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

    # ... الدوال الأخرى هنا ...

وأيضًا تعديل دالة COLS_V لتحميل الملف عند النقر على زر "Button":

def COLS_V():
    file_path = "E:\people.xlsx"  # المسار الذي تريده
    BOOK1 = book_E(file_path)
    BOOK1.load_file()
    combo_name.configure(values=BOOK1.column_values())

وعليك بتحديث الأمر المرتبط بزر "Button" في الكود الرئيسي ليستدعي الدالة COLS_V بدلاً من COLS_V(BOOK1):

b1 = ttk.Button(widgets_frame, text="print", bootstyle=("info", "outline"), command=COLS_V)

وبذلك عند النقر على زر "Button" سيتم تحميل الملف وتعيين القيم في combobox.

أما بالنسبة لتعديل المتغير column_values، بإمكانك تغيير قيمته بناءً على ما تحتاجه في البرنامج، باستخدام دالة BOOK1.column_values() للحصول على قائمة القيم من الملف، ومن ثم تعيينها للمتغير column_values.

كمثال:

column_values = BOOK1.column_values()

وتستطيع استخدام هذه القائمة لإعداد الخيارات المتاحة في combobox كما فعلت في الكود الحالي لديك.

  • 0
نشر (معدل)

عفوا أخي هل يبقى هذا الكود أعلى البرنامج أم يحذف , إذا حذف هذا الكود يقف البرنامج لإرتباط باقي الدوال بالمتغير BOOK1

BOOK1 = book_E('E:\people.xlsx')

 

إستفسار أخر أين يتم وضع مكان هذا الكود

column_values = BOOK1.column_values()

أخي هل لك أن تعيد لي الكود كامل لأقوم بتجريبه لدي:

الكود إنضرب لم يعمل لدي بعد التعديلات التي أخبرتني عنها

تم التعديل في بواسطة Ali Ali49

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...