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

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

قمت بعمل برنامج يعتمد أساساً علي برنامج الآلة الحاسبة.

لكن المطلوب اضافة 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()

 

Recommended Posts

  • 0
نشر

بعد مراجعة الكود، لم أجد أي أخطاء كبيرة تعيق فكرة التشغيل. و لكن هناك بعض النقاط يمكن تحسينها او تكون سبب لمشاكل صغيرة في الكود،
مثل:
قم بإضافة المكتبة المناسبة وهي tooltip وفي حال كنت تجرب إضافة Tooltip بطريقة مختلفة، فقد لا تكون مدعومة بشكل ما مع Tkinter.
او قم بإضافة ال parameter الرابع وهو يكون النص الذي يظهر في الـ Tooltip:

self.create_button("1", 1, 0, "اضغط لإدخال الرقم 1")

بالتوفيق

 

  • 0
نشر (معدل)
بتاريخ 4 ساعة قال Khaled Osama3:

بعد مراجعة الكود، لم أجد أي أخطاء كبيرة تعيق فكرة التشغيل. و لكن هناك بعض النقاط يمكن تحسينها او تكون سبب لمشاكل صغيرة في الكود،
مثل:
قم بإضافة المكتبة المناسبة وهي tooltip وفي حال كنت تجرب إضافة Tooltip بطريقة مختلفة، فقد لا تكون مدعومة بشكل ما مع Tkinter.
او قم بإضافة ال parameter الرابع وهو يكون النص الذي يظهر في الـ Tooltip:

self.create_button("1", 1, 0, "اضغط لإدخال الرقم 1")

بالتوفيق

شكراً جزيلاً لردكم السريع.

اخترت اضافة ال 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")

 

..............................................................................................................

بخصوص فكرة استيراد مكتبة واستخدامها فقد جربت بالفعل بعض المكتبات_ ومن بينها هذه المكتبة. لكنها تعمل مع أي برنامج أقوم بعمله باستثناء برنامج الآلة الحاسبة.

تم التعديل في بواسطة Ashraf Abdelkader
كنت أضع الردود منفصلة لكن الموقع قام بدمجها تلقائياً، فوضعت أسطر منقطة للفصل بينها.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...