السلام عليكم ورحمة الله وبركاته
أقوم بعمل برنامج لتحويل التقويم الياباني، علي كود آلة حاسبة مبسط مع دعم ال 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 (بما فى ذلك علامة النجمة لا تقوم باستيراد الكل وأضطر لإدخال الأمر المحدد فى السطر التالي) // لا مشكلة هنا.. المشكلة الوحيدة هي ما ذكرته أعلاه قبل الكود الرئيسي.
مع جزيل الشكر مقدماً..