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

ربط أداة Combobox من مكتبة Tkinter بملف ( Excel ) بأستخدام مكتبة Openpyxl

Ali Ali49

السؤال

السلام عليكم

أعمل على لغة بايثون

حالياً أعمل على تطبيق وأستخدمت فيه مكتبة Tkinter لتصميم واجهة ومكتبة Openpyxl للتعامل مع ملفات الإكسل ( Excel ) 

من أدوات مكتبة Tkinter توجد أداة أسمها Combobox ( القائمة المنسدلة )

لدي ملف أكسل يحتوي عل أعمدة وصفوف 

قمت بتحميل بيانات العمود الأول ووضعة داخل أداة Combobox

سؤالي لكم أحبتي

عند إختيار قيمة من القائمة المنسدلة ( Combobox ) أحتاج أن تظهر القيمة المقابلة لها أو بمعنى أخر جلب القيمة المقابلة لها من نفس الصف من العمود الأخر أنا من يحدده إضهار النتيجة على أداة النص أو طباعتها مثلا.

أرجو أن يكون السؤال واضح لكم .

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

لربط أداة Combobox في Tkinter بملف Excel باستخدام مكتبة Openpyxl، عليك بالتالي:

1- استيراد المكتبات المطلوبة:

from tkinter import *
from tkinter.ttk import Combobox
from openpyxl import load_workbook

2- تحميل ملف Excel باستخدام load_workbook:

workbook = load_workbook('اسم_الملف.xlsx')
sheet = workbook.active  # تحديد ورقة العمل النشطة

3- استخراج قيم العمود الأول من ورقة العمل وتخزينها في قائمة:

column_values = [cell.value for cell in sheet['A']]  # افتراضًا أن القيم في العمود الأول (A)

4- إنشاء نافذة Tkinter وإضافة أداة Combobox:

window = Tk()

combo = Combobox(window, values=column_values)  # تعيين قيم القائمة المنسدلة
combo.pack()

5- إضافة دالة تعمل عند اختيار قيمة من Combobox:

def on_combobox_selected(event):
    selected_value = combo.get()  # القيمة المحددة من القائمة المنسدلة
    row_index = column_values.index(selected_value) + 1  # +1 لأن الصفوف تبدأ من 1 وليس 0
    corresponding_value = sheet['B' + str(row_index)].value  # افتراضًا العمود الثاني (B)

    # قم بعرض القيمة المقابلة في أداة النص أو قم بطباعتها
    print(corresponding_value)  # يمكنك استخدام أي طريقة تعرض القيمة

combo.bind("<<ComboboxSelected>>", on_combobox_selected)  # ربط الدالة بحدث اختيار القيمة من Combobox

window.mainloop()

وبذلك عند اختيار قيمة من Combobox، ستستدعى الدالة on_combobox_selected وسيتم استخراج القيمة المقابلة لها من العمود الثاني (افترضت العمود B) ومن ثم يمكنك طباعتها أو عرضها في أداة النص أو التلاعب بها على النحو الذي ترغب به.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 7 دقائق مضت قال Mustafa Suleiman:

لربط أداة Combobox في Tkinter بملف Excel باستخدام مكتبة Openpyxl، عليك بالتالي:

1- استيراد المكتبات المطلوبة:

from tkinter import *
from tkinter.ttk import Combobox
from openpyxl import load_workbook

2- تحميل ملف Excel باستخدام load_workbook:

workbook = load_workbook('اسم_الملف.xlsx')
sheet = workbook.active  # تحديد ورقة العمل النشطة

3- استخراج قيم العمود الأول من ورقة العمل وتخزينها في قائمة:

column_values = [cell.value for cell in sheet['A']]  # افتراضًا أن القيم في العمود الأول (A)

4- إنشاء نافذة Tkinter وإضافة أداة Combobox:

window = Tk()

combo = Combobox(window, values=column_values)  # تعيين قيم القائمة المنسدلة
combo.pack()

5- إضافة دالة تعمل عند اختيار قيمة من Combobox:

def on_combobox_selected(event):
    selected_value = combo.get()  # القيمة المحددة من القائمة المنسدلة
    row_index = column_values.index(selected_value) + 1  # +1 لأن الصفوف تبدأ من 1 وليس 0
    corresponding_value = sheet['B' + str(row_index)].value  # افتراضًا العمود الثاني (B)

    # قم بعرض القيمة المقابلة في أداة النص أو قم بطباعتها
    print(corresponding_value)  # يمكنك استخدام أي طريقة تعرض القيمة

combo.bind("<<ComboboxSelected>>", on_combobox_selected)  # ربط الدالة بحدث اختيار القيمة من Combobox

window.mainloop()

وبذلك عند اختيار قيمة من Combobox، ستستدعى الدالة on_combobox_selected وسيتم استخراج القيمة المقابلة لها من العمود الثاني (أفترضنا العمود B) ومن ثم يمكنك طباعتها أو عرضها في أداة النص أو التلاعب بها على النحو الذي ترغب به.

أشكرك أخي هذا المطلوب

أرجو المعذرة أخي

هل تستطيع توضيح الكود التالي بشرح أوسع أو إسهاب أكثر من ذلك لكي أفهم كل تفصيلة من الكود جيداً

row_index = column_values.index(selected_value) + 1

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 ساعة قال Mustafa Suleiman:

لربط أداة Combobox في Tkinter بملف Excel باستخدام مكتبة Openpyxl، عليك بالتالي:

1- استيراد المكتبات المطلوبة:

from tkinter import *
from tkinter.ttk import Combobox
from openpyxl import load_workbook

2- تحميل ملف Excel باستخدام load_workbook:

workbook = load_workbook('اسم_الملف.xlsx')
sheet = workbook.active  # تحديد ورقة العمل النشطة

3- استخراج قيم العمود الأول من ورقة العمل وتخزينها في قائمة:

column_values = [cell.value for cell in sheet['A']]  # افتراضًا أن القيم في العمود الأول (A)

4- إنشاء نافذة Tkinter وإضافة أداة Combobox:

window = Tk()

combo = Combobox(window, values=column_values)  # تعيين قيم القائمة المنسدلة
combo.pack()

5- إضافة دالة تعمل عند اختيار قيمة من Combobox:

def on_combobox_selected(event):
    selected_value = combo.get()  # القيمة المحددة من القائمة المنسدلة
    row_index = column_values.index(selected_value) + 1  # +1 لأن الصفوف تبدأ من 1 وليس 0
    corresponding_value = sheet['B' + str(row_index)].value  # افتراضًا العمود الثاني (B)

    # قم بعرض القيمة المقابلة في أداة النص أو قم بطباعتها
    print(corresponding_value)  # يمكنك استخدام أي طريقة تعرض القيمة

combo.bind("<<ComboboxSelected>>", on_combobox_selected)  # ربط الدالة بحدث اختيار القيمة من Combobox

window.mainloop()

وبذلك عند اختيار قيمة من Combobox، ستستدعى الدالة on_combobox_selected وسيتم استخراج القيمة المقابلة لها من العمود الثاني (افترضت العمود B) ومن ثم يمكنك طباعتها أو عرضها في أداة النص أو التلاعب بها على النحو الذي ترغب به.

هل ممكن أخي طريقة العرض داخل أداة النص 

أعلم أنه يمكن إستخدام ttk.StringVar()

ولكن كيف ذلك 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 14 ساعة قال Ali Ali49:

هل ممكن أخي طريقة العرض داخل أداة النص 

أعلم أنه يمكن إستخدام ttk.StringVar()

ولكن كيف ذلك 

مكنك استخدام `ttk.StringVar()` لعرض وتحديث النص داخل أداة النص في واجهة Tkinter. إليك طريقة تنفيذ ذلك:

استيراد الوحدات المطلوبة:

import tkinter as tk
from tkinter import ttk

إنشاء نافذة رئيسية للتطبيق:

root = tk.Tk()
root.title("نافذة التطبيق")

إنشاء متغير StringVar:

text_var = tk.StringVar()

إنشاء واجهة النص وربطها بـ StringVar:

text_entry = ttk.Entry(root, textvariable=text_var)
text_entry.pack()

تحديث قيمة النص:

text_var.set("مرحبًا بك!")

تشغيل الحلقة الرئيسية للتطبيق:

root.mainloop()

بهذا الشكل، عندما تقوم بتحديث قيمة المتغير `text_var` باستخدام `text_var.set()`، ستتم مزامنة القيمة مع واجهة النص `text_entry` وستظهر القيمة الجديدة في النافذة.

لاحظ أن هذا مثال بسيط لعرض قيمة النص داخل أداة النص، ويمكنك تخصيص المزيد من خصائص وتنسيقات أداة النص حسب احتياجاتك.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...