Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: πρόσθεση στη tkinter

πρόσθεση στη tkinter 8 Χρόνια 1 Μήνας πριν #3468

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
καλησπέρα,
αν έχω αυτό το script
from tkinter import*
root=Tk()
 
e1=Label(root, text='αριθμός')
e1.grid(row=0, column=0)
 
e2=Label(root, text='αριθμός')
e2.grid(row=1, column=0)
 
e3=Label(root, text='Σύνολο')
e3.grid(row=2, column=0)
 
x1=Entry(root)
x1.grid (row=0, column=1)
x1.get()
 
x2=Entry(root)
x2.grid (row=1, column=1)
x2.get()
 
x3=Entry()
x3.grid (row=2, column=1)
x3.get()
 
root.mainloop()
 
Θέλω όταν δίνω για παράδειγμα την τιμή 5 στο x1 και την τιμή 2 στο x2, στο x3 να παίρνω την τιμή 7.
Επίσης θέλω να ρωτήσω με ποιο τρόπο μπορώ να αποκλήσω από τα πεδία να μπαίνουν γράμματα.
Βρήκα πληροφορίες στο ίντερνετ, αλλά επειδή τα αγγλικά μου δεν είναι και τόσο καλά, το κάνω συνέχεια λάθος.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

πρόσθεση στη tkinter 8 Χρόνια 1 Μήνας πριν #3470

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Πρώτα κάνε 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 κατά την εκτέλεση του προγράμματος.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

πρόσθεση στη tkinter 8 Χρόνια 1 Μήνας πριν #3471

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Πολύ καλό!!!!!
Ευχαριστώ πάρα πολύ.
Υπάρχει κανένας καλός οδηγός για tkinter με παραδείγματα (τα παραδείγματα τα θέλω, γιατί τα αγγλικά μου είναι μηδαμινά και με βοηθούν αρκετά.)
Επίσης θέλω να ρωτήσω θα μπορούσε το άθροισμα να βγαίνει χωρίς να υπάρχει button. Δηλαδή συμπληρώνω το πρώτο πεδίο, το δεύτερο πεδίο και στο τρίτο αυτόματα βγαίνει η τιμή. το προσπάθησα με focus, αλλά απέτυχα.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

πρόσθεση στη tkinter 8 Χρόνια 1 Μήνας πριν #3472

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Ο παρακάτω κώδικας απαντά και στις δυο ερωτήσεις σου: (Τροποποίησα λίγο τον κώδικα του babaliaris1)


from tkinter import *
root = Tk()
 
#Μεταβλητές Του Tkinter.
#Συνήθως τις χρησιμοποιώ ως ορίζματα
#textvariable σε entries.
#Πάντα τις αρχικοποιώ κάτω από
#το root=Tk() και πριν κάθε
#δήλωση των συναρτήσεων.
entryText1 = DoubleVar()
entryText2 = DoubleVar()
resultText  = DoubleVar()
 
 
def logic(*args):
 
    try:
        num1 = float(entryText1.get())
        num2 = float(entryText2.get())
 
    #Ο χρήστης έδωσε χαρακτήρες που δεν μπορούν να γίνουν αριθμοί.
    except ValueError:
        return 
 
    #Kάνω την πράξη.
    result = num1 + num2
 
    #Την μετατρέπω σε συμβολοσειρά.
##    result = str(result)
 
    #Την αποθηκεύω στην μεταβλητή resultText
    #Για να μπορέσω να την εμφανήσω δυναμικά
    #Σε ένα label.
    resultText.set(float(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)
 
entryText1.trace("w", logic)
entryText2.trace("w", logic)
root.mainloop()


Όσο για τους οδηγούς. Η σύστασή μου είναι να βελτιώσεις τα αγγλικά σου. Με ένα μέσο επίπεδο γνώσης της αγγλικής γλώσσας θα λύνεις το 95% των ερωτημάτων σου.

Συνιστώ να διαβάσεις αυτό.
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

πρόσθεση στη tkinter 8 Χρόνια 1 Μήνας πριν #3473

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Αν ξέρεις αγγλικά, μπορείς επίσης να δεις και αυτά εδώ τα βίντεο. Εμένα με βοήθησαν πάρα πολύ.

Βέβαια ο καλύτερος τρόπος είναι διαβάζεις ένα βιβλίο ή το documentation για το Tkinter.

Εγώ προσωπικά βαριέμαι πάρα πολύ να διαβάζω documentations :P
Προτιμώ βιβλία και βίντεο.

Εαν θέλεις όμως να μάθεις να χρησιμοποιείς μια βιβλιοθήκη, πρέπει να διαβάσεις
το documentation για να βγάλεις άκρη.

Όπως σε βολεύει :laugh:
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

πρόσθεση στη tkinter 8 Χρόνια 1 Μήνας πριν #3474

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Ευχαριστώ για τη βοήθεια.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.337 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου