Πρώτα κάνε copy-paste τον κώδικα σε ένα αρχείο στο pc σου και τρέξε το να δεις
πως λειτουργεί και μετά δες τον κώδικα. Έτσι είναι ποιο εύκολο να τον καταλάβεις.
from tkinter import*
root=Tk()
#Μεταβλητές Του Tkinter.
#Συνήθως τις χρησιμοποιώ ως ορίζματα
#textvariable σε entries.
#Πάντα τις αρχικοποιώ κάτω από
#το root=Tk() και πριν κάθε
#δήλωση των συναρτήσεων.
entryText1 = StringVar()
entryText2 = StringVar()
resultText = StringVar()
def logic():
string1 = entryText1.get(); #Πάρε το string που ειναι μέσα στην entryText1.
string2 = entryText2.get(); #Πάρε το string που ειναι μέσα στην entryText1.
#Προσπαθώ να μετατρέψω την συμβολοσειρά σε float.
try:
num1 = float(string1)
num2 = float(string2)
#Ο χρήστης έδωσε χαρακτήρες που δεν μπορούν να γίνουν αριθμοί.
except ValueError:
print("You must enter only numbers not characters!!!")
return
#Kάνω την πράξη.
result = num1 + num2
#Την μετατρέπω σε συμβολοσειρά.
result = str(result)
#Την αποθηκεύω στην μεταβλητή resultText
#Για να μπορέσω να την εμφανήσω δυναμικά
#Σε ένα label.
resultText.set(result)
#Label 1
e1=Label(root, text='αριθμός 1:')
e1.grid(row=0, column=0)
#Entry 1
entry1 = Entry(root, textvariable = entryText1)
entry1.grid (row=0, column=1)
#Label 2
e2=Label(root, text='αριθμός 2:')
e2.grid(row=2, column=0)
#Entry 2
entry2 = Entry(root, textvariable = entryText2)
entry2.grid (row=2, column=1)
#Button.
bt = Button(text = "Υπολόγισε", command = logic)
bt.grid(row = 3, column = 1)
#Label 3
e3=Label(root, text='Σύνολο: ')
e3.grid(row=5, column=0)
#Label 4
e3=Label(root, textvariable = resultText)
e3.grid(row=5, column=1)
root.mainloop()
Δεν μπορείς να πάρεις την τιμή ενός Entry με την x1.get(). Πρέπει να δώσεις ως όρισμα
ένα textvariable τύπου StringVar() μέσα στην οποία θα αποθηκευτεί η σειμβολοσειρά
που δίνει ο χρήστης στο Entry.
Επίσης μπορείς να χρησιμοποιήσεις textvariable μέσα σε ένα label για να μπορείς να αλλάζεις
δυναμικά το κείμενο ενός label κατά την εκτέλεση του προγράμματος.