k33theod Δημοσ. 8 Απριλίου 2016 Δημοσ. 8 Απριλίου 2016 (επεξεργασμένο) # Το πρόγραμμα αυτό είναι ένα κομπιουτεράκι χωρίς κουμπία με # δυνατότητα γραφικών παραστάσεων σε matplotlib python # έχω τη δυνατότητα να χρησιμοποιήσω επίσης τα # pi, sin, cos, tan, sqrt # Εισάγω τις βιβλιοθήκες from tkinter import * import matplotlib.pyplot as plt from numpy import linspace, pi, sin, cos, tan, sqrt # Ο κώδικας που εκτελείται αφού πιέσουμε enter στο κομπιουτεράκι def ipologizo(event): try: result= str(eval(calc.get())) # υπολογίζει το αποτέλεσμα αυτού που γράψαμε label1.config(text=result) # Το τυπώνει στο πλαίσιο αποτελέσματος #calc.delete(0,END)#διαγράφει τα πάντα από το entry except: label1.config(text='Λάθος δεδομένα') # Ο κώδικας που εκτελείται όταν πατήσουμε το κουμπί graph def f(event): try: c=int(a.get()) d=int(b.get()) x=linspace(c,d,1000) y=eval(graph.get()) plt.plot(x,y) #κάνει το plot plt.show() # και το εμφανίζει except: label1.config(text='Ξαναπροσπάθησε') calculator=Tk() # Δημιουργώ το βασικό παράθυρο calculator.title('ΚΟΜΠΙΟΥΤΕΡΑΚΙ') #Τίτλος calculator.wm_iconbitmap('calculator.ico') #εικονίδιο frame1=Frame(calculator) #κάνω ένα frame για το κομπιουτεράκι frame1.pack(side=TOP) #Το βάζω στο παράθυρο calc = Entry(frame1, justify=RIGHT) #το στοιχείο για entry για κομπιουτεράκι calc.focus_set() #του δίνω focus calc.config(width=40, font=('courier',18)) #ρυθμίσεις calc.grid(column=0,padx=10, pady=10) #Το βάζουμε στο frame1 label1=Label(frame1,text='0', relief='sunken', bg ='#98FB98', bd=2, font=('arial',16), width=20 ) #Δημιουργούμε #την ταμπέλα αποτελέσματος label1.grid(row=0,column=1, padx=10) #τη βάζουμε στο παράθυρο calc.bind("<Return>", ipologizo) #δημιουργούμαι το event για το enter frame2=Frame(calculator) #Δημιουργώ το frame για τις γραφικές frame2.pack() #Το βάζουμε στο παράθυρο #Δημιουργώ μια ταμπέλα f(x) = label_graph=Label(frame2, text='f(x)= ',font=('courier',18), bg='white' ) label_graph.pack (side=LEFT, padx=10, pady=10) graph=Entry(frame2) #Δημιουργώ το entry για τις συναρτήσεις graph.config(width=20, font=('courier',18)) #ρυθμίσεις graph.pack(side=LEFT, padx=10, pady=10) #Το βάζουμε στο frame2 #Δημιουργώ δύο ταμπέλες και 2 μικρά entry για να πάρω #τις τιμές του x που θέλω τη γραφική παραστάση a_label=Label(frame2, text='x από: ',font=('courier',18), bg='white' ) a_label.pack (side=LEFT, padx=10, pady=10) a=Entry(frame2) a.config(width=5, font=('courier',18), bg='white') a.pack(side=LEFT, padx=10, pady=10) b_label=Label(frame2, text='εώς : ',font=('courier',18), bg='white' ) b_label.pack (side=LEFT, padx=10, pady=10) b=Entry(frame2) b.config(width=5, font=('courier',18), bg='white') b.pack(side=LEFT, padx=10, pady=10) # Δημιουργώ το κουμπί που καλεί την f button1=Button(frame2, text='graph', font=('times',14), bg='#EEE8AA' ) button1.pack(side=LEFT, padx=10, pady=10) button1.bind('<Button-1>', f) calculator.mainloop() Αναλυτικός οδηγός για tkinter http://effbot.org/tkinterbook/tkinter-index.htm#class-reference Επεξ/σία 8 Απριλίου 2016 από k33theod 1
M2000 Δημοσ. 8 Απριλίου 2016 Δημοσ. 8 Απριλίου 2016 Το πρόβλημα είναι ότι δεν έχω τα εικονίδια...Μήπως θα μπορούσες να τα βάλεις όλα σε ένα zip; Και επίσης ο κώδικας που βάζεις όταν τον περνάω σε gedit (που χρωματίζει python3) έχει κενά που πρέπει να βγάλω (με το Shift Tab), αλλά μετά πρέπει να δώσω πάλι με προσοχή τα κενά που θέλουν τα Def και Try Οπότε βάζε και ένα αντίγραφο σε UTF8 και κατάληξη .py αν μπορείς!
k33theod Δημοσ. 8 Απριλίου 2016 Μέλος Δημοσ. 8 Απριλίου 2016 Το πρόβλημα είναι ότι δεν έχω τα εικονίδια...Μήπως θα μπορούσες να τα βάλεις όλα σε ένα zip; Και επίσης ο κώδικας που βάζεις όταν τον περνάω σε gedit (που χρωματίζει python3) έχει κενά που πρέπει να βγάλω (με το Shift Tab), αλλά μετά πρέπει να δώσω πάλι με προσοχή τα κενά που θέλουν τα Def και Try Οπότε βάζε και ένα αντίγραφο σε UTF8 και κατάληξη .py αν μπορείς! Είναι ένα εικονίδιο .ico θα το ανεβάσω μετά Εναλλακτικά μπορείς να κάνεις comment τη γραμμή ή να τη σβήσεις ή να βάλεις ένα δικό σου εικονίδιο. Με τα ταβ θέλει προσοχή. Εγώ τα έχω νομίζω 4 space 1o intentation 8 space 2o Δεν ξέρω γιατί σου το βγάζει λάθος. Ίσως κάτι με το copy paste τα άλλαξε. utf8 είναι default στο notepad++ που χρησιμοποιώ. Αν στο linux που χρησιμοποιείς τρέχει με κατάληξη .pyw είναι προτιμότερο αλλιώς .py ή ότι θέλεις
M2000 Δημοσ. 8 Απριλίου 2016 Δημοσ. 8 Απριλίου 2016 Στην αντιγραφή που κάνω Firefox linux σε gEdit βάζει σε όλες τις γραμμές κενά, εκεί που είναι η αρίθμηση γραμμών.
k33theod Δημοσ. 8 Απριλίου 2016 Μέλος Δημοσ. 8 Απριλίου 2016 Θα ανεβάσω και το αρχείο ως συνημμένο και δοκίμασε να το ανοίξεις αν είναι οκ σημαίνει ότι οι αλλαγές γίνονται με το copy paste στον editor του insomnia Επίσης διόρθωσα λίγο τον κώδικα πάνω έσβησα τις global που δεν χρειάζονται calculator.ico tkinter_calc.zip
M2000 Δημοσ. 8 Απριλίου 2016 Δημοσ. 8 Απριλίου 2016 τρέχει χωρίς το εικονίδιο έβαλα και αυτό calculator.wm_iconbitmap(os.getcwd()+'/calculator.ico') #εικονίδιο με αυτό στην αρχή: import os File "calc2.pyw", line 42, in <module> calculator.wm_iconbitmap(os.getcwd()+'/calculator.ico') #εικονίδιο File "/usr/lib/python3.4/tkinter/__init__.py", line 1702, in wm_iconbitmap return self.tk.call('wm', 'iconbitmap', self._w, bitmap)_tkinter.TclError: bitmap "/home/person/test/calculator.ico" not defined ενώ: με ls calc* :~/test$ ls calc*calc2.pyw calc2.pyw~ calc.py calc.py~ calculator.ico 1
anon667 Δημοσ. 8 Απριλίου 2016 Δημοσ. 8 Απριλίου 2016 @k33theod Είναι καλή ευκαιρία να πειραματιστείς με github (αντί να ανεβάζεις αρχεία, paste τον κώδικα εδώ, κλπ.). 1
gon1332 Δημοσ. 8 Απριλίου 2016 Δημοσ. 8 Απριλίου 2016 Υπάρχει και αυτό το group που είχε φτιάξει ο defacer για διάφορα. Θα μπορούσες να φτιάξεις και κάτι εδώ αν δε θες να γεμίσεις το δικό σου.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα