-
المساهمات
4 -
تاريخ الانضمام
-
تاريخ آخر زيارة
إنجازات Ashraf Abdelkader
عضو مبتدئ (1/3)
3
السمعة بالموقع
-
شكراً جزيلاً لكم،، لا أعرف كيف أشكركم. سأخصص شكر خاص لكم داخل الكود وعلى الموقع عندما أقوم بنشر البرنامج بعد الانتهاء من منه (ادراج بقية السنوات مثلاً)_ وهو مجاني بالمناسبة. حالياً أستخدم PyCharm Community Edition فى البرمجة والتنسيق، أو ++Notepad فى التنسيق فقط. وجدت Black Formatter علي Github وسأقوم بتحميله واستخدامه باذن الله تعالي. مع جزيل الشكر لكم مرة أخري. والسلام عليكم ورحمة الله وبركاته..
-
السلام عليكم ورحمة الله وبركاته أقوم بعمل برنامج لتحويل التقويم الياباني، علي كود آلة حاسبة مبسط مع دعم ال tooltip وقد تم عمل الكود من الصفر لأن أكواد عدة أخري لم تقبل الtooltip مرفق أدناه الكود التالي لا أعلم ما الخطأ به.. المشكلة الوحيدة هي أن زرا "الجمع" و "يساوي" لا يقومان بمسح الرقم الموجود.. فاذا ضغطت رقم 1 ثم ضغطت زر الجمع ثم رقم 2 يظهر الرقمان 1 و2 متجاوران.. واذا ضغطت زر يساوي لا يظهر الناتج بالطبع بسبب المشكلة السابقة (وربما لمشكلة اضافية أيضاً). from tkinter import * import tkinter as tk from tkinter import messagebox from tkinter import Entry,Tk#, Canvas from tkinter.tix import * from tkinter.tix import Balloon from tkinter.tix import tixCommand class Calculator: def __init__(self, master): self.master = master def button_click(entry, value): entry_field.insert(tk.END, value) def clear(entry): entry_field.delete(0, tk.END) def backspace(entry): current_text = entry.get() entry_field.delete(len(current_text) - 1) def buttonadd(): number_one = entry_field.get() global number1 global calculator calculator = "addition" number1 = int(number_one) entry_field.delete(0, END) def buttonequal(): numbertwo = entry_field.get() entry_field.delete(0, END) def add(self, number_one, numbertwo): return number_one + numbertwo if Calculator == "addition": entry_field.insert(0, number1 + int(numbertwo)) def button_click(root, text): if text == "=": try: result = str(eval(entry_field.get())) entry_field.delete(0, tk.END) entry_field.insert(0, result) except: entry_field.delete(0, tk.END) entry_field.insert(0, "Error") elif text == "CLR": entry_field.delete(0, tk.END) elif text == "BCKSP": entry_field.delete(len(entry_field.get()) - 1, tk.END) else: entry_field.insert(tk.END, text) # Create the main application window root = Tk() root.geometry("1000x1000") root.title("برنامج تحويل التقويم الياباني") root.configure(background="light green") root.columnconfigure((0, 1, 2, 3, 4), weight=1) # Create a Balloon widget for tooltips tool_tip = Balloon(root) # Create the label label_1 = tk.Label(root, text="近現代", bg="green", fg="white", font=('Mincho', 12)) label_1.grid(row=0, column=0, columnspan=4, padx=10, pady=10) # Create the entry field entry_field = tk.Entry(root, width=30, justify='right', font=('Arial', 16)) entry_field.grid(row=1, column=0, columnspan=4, padx=10, pady=10) # Create the buttons button_1 = tk.Button(root, text="明治", bg="green", fg="white", font="Mincho, 12", command=lambda: button_click(root, "1868")) button_1.grid(row=2, column=0, columnspan=4, padx=10, pady=10) button_2 = tk.Button(root, text="大正", bg="green", fg="white", font="Mincho, 12", command=lambda: button_click(root, "1912")) button_2.grid(row=3, column=0, columnspan=4, padx=10, pady=10) button_3 = tk.Button(root, text="昭和", bg="green", fg="white", font="Mincho, 12", command=lambda: button_click(root, "1926")) button_3.grid(row=4, column=0, columnspan=4, padx=10, pady=10) button_4 = tk.Button(root, text="平成", bg="green", fg="white", font="Mincho, 12", command=lambda: button_click(root, "1989")) button_4.grid(row=5, column=0, columnspan=4, padx=10, pady=10) button_5 = tk.Button(root, text="令和", bg="green", fg="white", font="Mincho, 12", command=lambda: button_click(root, "2019")) button_5.grid(row=6, column=0, columnspan=4, padx=10, pady=10) button_6 = tk.Button(root, text="CLR", bg="blue", fg="white", font="Arial, 12", command=lambda: entry_field.delete(0, tk.END)) button_6.grid(row=1, column=4, columnspan=4, padx=5, pady=5) button_7 = tk.Button(root, text="BCKSP←", bg="blue", fg="white", font="Arial, 12", command=lambda: entry_field.delete(len(entry_field.get()) - 1, tk.END)) button_7.grid(row=1, column=5, columnspan=4, padx=5, pady=5) button_8 = tk.Button(root, text="+", bg="blue", fg="white", font="Arial, 12", command=lambda: buttonadd()) button_8.grid(row=1, column=2, columnspan=4, padx=10, pady=10) button_9 = tk.Button(root, text="=", bg="blue", fg="white", font="Arial, 12", command= lambda: buttonequal()) button_9.grid(row=1, column=3, columnspan=4, padx=10, pady=10) button_10 = tk.Button(root, text="1", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "1")) button_10.grid(row=4, column=1, columnspan=4, padx=5, pady=5) button_11 = tk.Button(root, text="2", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "2")) button_11.grid(row=4, column=2, columnspan=4, padx=5, pady=5) button_12 = tk.Button(root, text="3", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "3")) button_12.grid(row=4, column=3, columnspan=4, padx=5, pady=5) button_13 = tk.Button(root, text="4", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "4")) button_13.grid(row=4, column=4, columnspan=4, padx=5, pady=5) button_14 = tk.Button(root, text="5", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "5")) button_14.grid(row=4, column=5, columnspan=4, padx=5, pady=5) button_15 = tk.Button(root, text="6", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "6")) button_15.grid(row=5, column=1, columnspan=4, padx=5, pady=5) button_16 = tk.Button(root, text="7", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "7")) button_16.grid(row=5, column=2, columnspan=4, padx=5, pady=5) button_17 = tk.Button(root, text="8", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "8")) button_17.grid(row=5, column=3, columnspan=4, padx=5, pady=5) button_18 = tk.Button(root, text="9", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "9")) button_18.grid(row=5, column=4, columnspan=4, padx=5, pady=5) button_19 = tk.Button(root, text="0", bg="cyan", fg="white", font="Arial, 12", command=lambda: button_click(root, "0")) button_19.grid(row=5, column=5, columnspan=4, padx=5, pady=5) # Assign tooltips to the widgets tool_tip.bind_widget(button_1, balloonmsg="أقصي رقم للادخال هو 44") tool_tip.bind_widget(button_2, balloonmsg="أقصي رقم للادخال هو 14") tool_tip.bind_widget(button_3, balloonmsg="أقصي رقم للادخال هو 63") tool_tip.bind_widget(button_4, balloonmsg="أقصي رقم للادخال هو 29") tool_tip.bind_widget(button_5, balloonmsg="لا يوجد رقم أقصي حتي تاريخه") # Run the main application loop root.mainloop() ملحوظة (1) :تمت تجربة الأكواد التالية أيضاً.. لكن بلا جدوي.. لا يتم مسح الرقم عند ادراج الرقم الجديد أو عند ضغط علامة الجمع. button_8 = tk.Button(root, text="+", bg="blue", fg="white", font="Arial, 12", command=lambda: entry.insert(tk.END, '+')) button_8.grid(row=1, column=2, columnspan=4, padx=10, pady=10) button_9 = tk.Button(root, text="=", bg="blue", fg="white", font="Arial, 12", command= lambda: button_click(root, "=")) button_9.grid(row=1, column=3, columnspan=4, padx=10, pady=10) ملحوظة (2) : أعلم أن أوامر الاستيراد import والتعريف def ربما تكون أكثر من اللازم، لكني اضطررت لوضعها كلها لحل مشكلة not defined (بما فى ذلك علامة النجمة لا تقوم باستيراد الكل وأضطر لإدخال الأمر المحدد فى السطر التالي) // لا مشكلة هنا.. المشكلة الوحيدة هي ما ذكرته أعلاه قبل الكود الرئيسي. مع جزيل الشكر مقدماً..
- 2 اجابة
-
- 2
-
شكراً جزيلاً لردكم السريع. اخترت اضافة ال parameter الرابع self.create_button("慶長", 1, 4, "أقصي رقم للادخال هو 19") فكرة الكود: import tkinter as tk from tkinter import ttk class Calculator: def __init__(self, master): self.master = master master.title("برنامج تحويل التقويم الياباني") master.configure(background="light green") master.geometry("1300x1300") # Create a Balloon widget for tooltips tool_tip = Balloon(master) # Create the buttons self.create_button("1", 1, 0, tooltip="") self.create_button("慶長", 1, 4, tooltip="Max number is 19") def create_button(self, text, row, column, tooltip): button = tk.Button(self.master, text=text, width=11, height=2, font=('Arial', 16), command=lambda: self.button_click(text)) button.grid(row=row, column=column, padx=5, pady=5) نجح تنفيذ الكود دون أخطاء فى التيرمينال لكن الtooltip لا يظهر لسبب ما.. حتي مع الأزرار التي أضع لها نص يظهر ك tooltip. ............................................................................................................. الكود التالي يعمل (أعلم أنني أستخدم هنا tix القديم لكن هذا ما نجح تنفيذه) لكن المشكلة هي أنني أريد كود يعمل مع برنامج الآلة الحاسبة تحديداً. وهناك مشكلة أخري فى ذلك الكود الذي يعمل، وهي أنه نجح مع عيب واحد، فاذا هم المستخدم بالذهاب إلي الزر للضغط عليه لا تظهر الtooltip، وانما عليه الانتظار لبعض الوقت علي الزر حتي تظهر الtooltip، وذلك برغم عدم تعيين delay. from tkinter import * from tkinter.tix import * # Create the main application window root = Tk() root.geometry("900x900") root.title("برنامج تحويل التقويم الياباني") # Create a Balloon widget for tooltips tool_tip = Balloon(root) # Create a button widget meiji = Button(root, text="明治", bg="green", fg="white", font="Mincho, 11") meiji.pack(pady=3) # Assign tooltips to the widgets tool_tip.bind_widget(meiji, balloonmsg="أقصي قيمة صالحة هي 45") .............................................................................................................. بخصوص فكرة استيراد مكتبة واستخدامها فقد جربت بالفعل بعض المكتبات_ ومن بينها هذه المكتبة. لكنها تعمل مع أي برنامج أقوم بعمله باستثناء برنامج الآلة الحاسبة.
-
السلام عليكم ورحمة الله وبركاته قمت بعمل برنامج يعتمد أساساً علي برنامج الآلة الحاسبة. لكن المطلوب اضافة tooltip إلي كل زر، وتحديداً إلي الكود التالي، ومع العلم بأني جربت بالفعل عدة أكواد لكنها لم تعمل. def create_button(self, text, row, column): button = tk.Button(self.master, text=text, width=11, height=2, font=('Arial', 16), command=lambda: self.button_click(text)) button.grid(row=row, column=column, padx=5, pady=5) فكرة الكود الكامل فى حالة الرغبة فى الاطلاع (هذه الفكرة تظهر الأسطر الرئيسية فقط التى يمكن عبرها فهم فكرة الكود) import tkinter as tk class Calculator: def __init__(self, master): self.master = master master.title("برنامج تحويل التقويم الياباني") master.configure(background="light green") master.geometry("1000x1000") # Create the entry field self.entry = tk.Entry(master, width=30, justify='right', font=('Arial', 16)) self.entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10) # Create the buttons self.create_button("1", 1, 0) self.create_button("明治", 1, 4) def create_button(self, text, row, column): button = tk.Button(self.master, text=text, width=11, height=2, font=('Arial', 16), command=lambda: self.button_click(text)) button.grid(row=row, column=column, padx=5, pady=5) def button_click(self, text): if text == "=": try: result = str(eval(self.entry.get())) self.entry.delete(0, tk.END) self.entry.insert(0, result) except: self.entry.delete(0, tk.END) self.entry.insert(0, "Error") elif text == "CLR": self.entry.delete(0, tk.END) elif text == "BCKSP": self.entry.delete(len(self.entry.get())-1, tk.END) elif text == "明治": self.entry.insert(0, 1868) else: self.entry.insert(tk.END, text) root = tk.Tk() calculator = Calculator(root) root.mainloop()
- 2 اجابة
-
- 1