-
المساهمات
222 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
أجوبة بواسطة Ahmed Ahmed64
-
-
from openpyxl import * from openpyxl.styles import Font from openpyxl.styles import Border, Side from openpyxl.styles import PatternFill from tkinter import * root = Tk() root.configure(background='light green') root.title("registration form") root.geometry("400x300") wb = load_workbook('excel2.xlsx') sheet = wb.active sheet.column_dimensions['A'].width = 30 sheet.column_dimensions['B'].width = 15 sheet.column_dimensions['C'].width = 10 sheet.column_dimensions['D'].width = 10 sheet.column_dimensions['E'].width = 10 current_row = sheet.max_row current_column = sheet.max_column sheet.cell(row=1, column=1).value = "الإسم" sheet.cell(row=1, column=2).value = "رقم الجلوس" sheet.cell(row=1, column=3).value = "النتيجة" sheet.cell(row=1, column=4).value = "أعمال السنة" sheet.cell(row=1, column=5).value = "النهائي" def insert(): sheet.cell(row=current_row + 1, column=1).value = Entry1.get() sheet.cell(row=current_row + 1, column=2).value = Entry2.get() sheet.cell(row=current_row + 1, column=3).value = ("دور أول") sheet.cell(row=current_row + 2, column=3).value = ("دور ثاني") sheet.cell(row=current_row + 1, column=4).value = Entry3.get() sheet.cell(row=current_row + 1, column=5).value = Entry4.get() wb.save('excel10.xlsx') Label1 = Label(root, text="إسم الطالب", bg="light green").grid(row=1, column=0) Label2 = Label(root, text="رقم الجلوس", bg="light green").grid(row=2, column=0) Label3 = Label(root, text="أعمال السنة", bg="light green").grid(row=3, column=0) Label4 = Label(root, text="النهائي", bg="light green").grid(row=4, column=0) Entry1 = Entry(root) Entry1.grid(row=1, column=1, ipadx="100") Entry2 = Entry(root) Entry2.grid(row=2, column=1, ipadx="100") Entry3 = Entry(root) Entry3.grid(row=3, column=1, ipadx="100") Entry4 = Entry(root) Entry4.grid(row=4, column=1, ipadx="100") submit = Button(root, text="Submit", fg="Black",bg="Red", command=insert).grid(row=8, column=1) root.mainloop()
هل يمكن تصحيح الكود حتى أصل لهذه النتيجة
-
1
-
-
ممكن كيفية عمل كود يقوم بإستخراج كل القيم المطابقة للبحث من أكثر من شيت إكسل باستخدام openpyxl
-
1
-
-
بتاريخ 2 دقائق مضت قال Kais Hasan:
العفو، هذا واجبنا.
إن المكون Entry بشكل عام يستعمل لإدخال نص و ليس لعرض نص، في حال كنت متأكداً بأنه لن يتم إدخال نص يمكن القيام بذلك كما يلي:
Entry1.insert(0, str(...))
يجب وضع ما تريده بدلاً من الثلاث نقاط.
في حال كان من الممكن أن يتم إدخال نص و لكن تريد محي النص المدخل و إظهار ما تريده فقط يمكن القيام بذلك كما يلي:
n = len(Entry1.get()) Entry1.delete(0, n) Entry1.insert(0, str(...))
و لكن أنصحك باستعمال المكون label في حال كنت تريد عرض شيء فقط بدون إدخال.
أشكرك أخي فعلا هذا ماقمت به الأن قبل الحصول على الجواب من حضرتك حيث أني إستخدمت label لذلك
تحياتي أخي ( بارك الله فيك ) وزادك الله علماً
طلب لو سمحت لو تدلني على كورس لكيفية طباعة ورقة تقرير أي أني أريد أن أستخرج تقرير مطبوع
-
1
-
-
بتاريخ 14 دقائق مضت قال Kais Hasan:
عفوا و لكن هل يمكنك توضيح الخطأ عبر لقطة شاشة، او تحديد تماما ما الذي يحدث.
أخي الحبيب أشكرك جزيل الشكر والإمتنان على الوقت والجهذ المبذول منك لكي توصل المعلومة ولك مني كل التقدير والإحترام
أخي الأن وصلت إلى المعلومة التي كنت أعجز عن القيام بها والأن وقفت عند جزئية بسيطة ولا أدري الخطأ أين
المطلوب الأن بعد التحصل على قيمة المتغير A1 تمريرها إلى Entry
def callbackFunc(event): value1=Combo1.get() A1= d[int(value1)] Entry1.config(text=A1)
-
1
-
-
بتاريخ 4 دقائق مضت قال Kais Hasan:
إن القيم تصبح سلاسل نصية في ال combo box لذلك كل ما عليك هو تحويلها إلى رقم كما يلي:
d[int(value1)]
عند محاولة الطباعة لم يظهر لي شي ؟
print= d[int(value1)]
بتاريخ 7 دقائق مضت قال Ahmed Ahmed:عند محاولة الطباعة لم يظهر لي شي ؟
print= d[int(value1)]
رائع جداً
مشكلة في تمرير القيمة (أين الخطأ )
def callbackFunc(event): value1=Combo1.get() A1= d[int(value1)] Entry1.text=A1
-
1
-
-
def callbackFunc(event): value1=Combo1.get() print (d[value1]) numbers = [row["Employee-number"] for row in employee.values()] names = [row["Employee-name"] for row in employee.values()] d = {k:v for (k, v) in zip(numbers, names)} Combo1=ttk.Combobox(FORM_A,width=50,values=numbers) Combo1.bind("<<ComboboxSelected>>", callbackFunc) Combo1.pack(pady=30)
يبد أن لدي خطأ هنا النتيجة تظهر لي قيمة نفس العمود بوجود خطأ كالتالي
-
1
-
-
def callbackFunc(event): value1=Combo1.get() print(value1) Combo1=ttk.Combobox(FORM_A,width=50,values=numbers) Combo1.bind("<<ComboboxSelected>>", callbackFunc) Combo1.pack(pady=30)
النتيجة تظهر القيمة المختارة من Combo1
أين الخطأ .... أريد إظهار القيمة المقابلة للقيمة المختارة من القاموس للمتغبر الذي أعطيته إسم d
d = {k:v for (k, v) in zip(numbers, names)}
-
1
-
-
عند إستخدام bind يظهر خطأ
-
numbers = [row["Employee-number"] for row in employee.values()] names = [row["Employee-name"] for row in employee.values()] d = {k:v for (k, v) in zip(numbers, names)}
هل ماقمت به الأن صححيح ,, إذا كان ذلك كيف أتعامل مع الكومبوبكس في ذلك أم ينقص أم ما ,, هل حان الأمر الأن لأتعامل مع الكود التالي
combo.bind("<<ComboboxSelected>>", callbackFunc)
مثال هل يعمل الكود السابق بهكذا طريقة
def callbackFunc(event😞
print("ok")
Combo1.bind("<<ComboboxSelected>>", callbackFunc)
-
1
-
-
ذكرت أني أحتاج أن أقوم بإنشاء قاموس إضافي مفاتيحة القيم من ال combo box
حاولت برمجة هذا الكود ولاكن لم أستفد منه
namme= {key:val for key,val in employee.items()}
الرجاء توجيهي خطوة بخطوة لكي أستوعب المطلوب بشكل أفضل
ما المطلوب أولا
-
1
-
-
أنا هنا أستعمل قاموس ( الرجاء التوضيح أكثر ) على المثال المرسل حتى أفهم الطريقة
-
1
-
-
أرجو المساعدة كيف أستطيع عند إختيار قيمة من أداة combo أن تظهر القيمة المقابلة لها من العمود الثاني أو على سبيل المثال العمود الثالت حيث أضهر النتيحة في مربع النص
from tkinter import * from tkinter import ttk from openpyxl.workbook import workbook from openpyxl import load_workbook FORM_A=Tk() FORM_A.geometry('800x500') w_book1=load_workbook('Employee.xlsx') sheet_1=w_book1.active employee={} i=1 for row in sheet_1.iter_rows(min_row=1, max_row=9,min_col=1,max_col=5,values_only=True): id=i st={"Employee-number":row[0],"Employee-name":row[1],"employee-phone":row[2],"Employee-email":row[3],} i+=1 employee[id]=st numbers = [row["Employee-number"] for row in employee.values()] names = [row["Employee-name"] for row in employee.values()] Combo1=ttk.Combobox(FORM_A,width=50,values=numbers).pack(pady=30) Combo2=ttk.Combobox(FORM_A,width=50,values=names).pack(pady=30) print(employee) # هنا أريد إدراج قيمة العود الثاني المقابلة للعمود الأول عند الإختيار من أداة الكومبوبكس Entry1=Entry(FORM_A,width=50).pack(pady=30) FORM_A.mainloop()
-
1
-
-
قمت بمحاولة أن أقوم بإدخال رقم الموضف لأستخرج البيانات الخاصة به من المصفوفة ولاكن عجزت أن أعملها , الرجاء المساعدة
sr=input("رقم الموضف: ")
if sr in employee:
print(sr ,"mmmm",employee[sr])
else:
print('sory')
-
رائع أخي Kais Hasan أشكرك جزيل الشكر :,,,, لقد قمت بتطبيق الكود وتحصلت على النتيجة التي أردتها داخل أداة combo
أرجو من حضرتك لو تساعدني كيف أستطيع عند إختيار قيمة من أداة combo أن تظهر القيمة المقابلة لها من العمود الثاني أو على سبيل المثال العمود الثالت حيث أضهر النتيحة في مربع النص
from tkinter import *
from tkinter import ttk
from openpyxl.workbook import workbook
from openpyxl import load_workbook
FORM_A=Tk()
FORM_A.geometry('800x500')
w_book1=load_workbook('Employee.xlsx')
sheet_1=w_book1.active
employee={}
i=1
for row in sheet_1.iter_rows(min_row=1, max_row=9,min_col=1,max_col=5,values_only=True):
id=i
st={"Employee-number":row[0],"Employee-name":row[1],"employee-phone":row[2],"Employee-email":row[3],}
i+=1
employee[id]=st
numbers = [row["Employee-number"] for row in employee.values()]
names = [row["Employee-name"] for row in employee.values()]
Combo1=ttk.Combobox(FORM_A,width=50,values=numbers).pack(pady=30)
Combo2=ttk.Combobox(FORM_A,width=50,values=names).pack(pady=30)
print(employee)
# هنا أريد إدراج قيمة العود الثاني المقابلة للعمود الأول عند الإختيار من أداة الكومبوبكس
Entry1=Entry(FORM_A,width=50).pack(pady=30)
FORM_A.mainloop()
-
مساعدة في إدراج قيم من القاموس إلى أداة Combobox
مساعدة على هذا الكود
from tkinter import * from tkinter import ttk from openpyxl.workbook import workbook from openpyxl import load_workbook # قمت بإنشاء نافذه FORM_A=Tk() FORM_A.geometry('800x500') # قمت بفتح ملف الأكسل و ورقة العمل w_book1=load_workbook('Employee.xlsx') sheet_1=w_book1.active # قمت بتحويل الحدول بورقة العمل إلى قاموس employee={} i=1 for row in sheet_1.iter_rows(min_row=1, max_row=9,min_col=1,max_col=5,values_only=True): id=i st={"Employee-number":row[0],"Employee-name":row[1],"employee-phone":row[2],"Employee-email":row[3],} i+=1 employee[id]=st print(employee) # هنا أريد إدراج قيم العود الأول Combo1=ttk.Combobox(FORM_A,width=50).pack(pady=30) # هنا أريد إدراج قيمة العود الثاني المقابلة للعمود الأول عند الإختيار من أداة الكومبوبكس Entry1=Entry(FORM_A,width=50).pack(pady=30) FORM_A.mainloop()
-
1
-
-
أخي لقد طرحت سؤالي بعد تجريب الكود وهذا ما ظهر لدي وهوا رقم الخلية وليس القيمة الموجودة بالخلية
أرجو تبسيط الكود أكثر أو طريقة أخرى لذلك
from tkinter import *
from tkinter import ttk
from openpyxl.workbook import workbook
from openpyxl import load_workbookform_A=Tk()
form_A.geometry('500x500')wb=load_workbook('2003-2004.xlsx')
ws=wb.activeclass KeyValueCombobox(ttk.Combobox):
def __init__(self, master=None, cnf={}, **options):
self.dict = None
if 'values' in options:
if isinstance(options.get('values'), dict):
self.dict = options.get('values')
options['values'] = sorted(self.dict.keys())
ttk.Combobox.__init__(self, **options)
def get(self):
if self.dict:
return self.dict[ttk.Combobox.get(self)]
else:
return ttk.Combobox.get(self)def get_key(self):
return ttk.Combobox.get(self)def get_value(self):
return self.get()
colum_A = ws['A']
items = {}
for key, cell in enumerate(colum_A):
items[str(key)] = str(cell.value)
Combo1= KeyValueCombobox(form_A,values= items)
def onSelect(event):
cell_b = ws[f'B{Combo1.get_key()}']
print(cell_b.value)
Combo1.bind('<<ComboboxSelected>>', onSelect)
Combo1.pack(pady=30)form_A.mainloop()
-
ألف تحية لك أخي مسعود وزادك الله علما نافعا
شكرا جزيلا
الشرح بإذن الله واضح لاكن لو سمحت كيف أجعل قيمة الك Combobox التي تضهر للمستخدم قيم العمود A وليس رقم الخلية
-
1
-
-
أشكرك جزيل الشكر أخي < مسعود زاهي > بارك الله فيك على الإجابة.
أخي مسعود أطمع في مساعدة أخرى وقد عجزت عن تنفيذها
ماذا لو كان لديا عمود أخر على سبيل المثال العمود B وأريد أن أجلب قيمة معينه من هذا العمود بناءا على القيمة التي تقابلها من العمود A وذلك تكمله للمثال السابق عن الأختيار من combobox حيث أريد عرض النتيجة في مربع النص.
-
1
-
-
بتاريخ منذ ساعة مضت قال Ahmed Ahmed:
السلام عليكم
كيف أستطيع جلب بيانات عمود معين من ملف إكسل إلى أداة combobox بلغة البايثون
grab columns into combobox py python
المكتبات المستخدمة tkinter , openpyxl
أرجو التوضيح ولو بمثال عملي
أرجو تصحيح الكود
from tkinter import *
from tkinter import ttk
from openpyxl.workbook import workbook
from openpyxl import load_workbook
form_A=Tk()
form_A.geometry('500x500')
wb=load_workbook('2003-2004.xlsx')
ws=wb.active
colum_A = ws['A']
Combo1=ttk.Combobox(form_A,value=column_A)
Combo1.pack(pady=30)
form_A.mainloop()
-
1
-
-
السلام عليكم
كيف أستطيع جلب بيانات عمود معين من ملف إكسل إلى أداة combobox بلغة البايثون
grab columns into combobox py python
المكتبات المستخدمة tkinter , openpyxl
أرجو التوضيح ولو بمثال عملي
-
1
-
تنفيذ عملية معينة على كافة الأسماء في ملف excel باستعمال python
في بايثون
نشر
تعديل الكود حيث يمر على كل إسم وينفذ كما نفذ هذا الكود