2014-05-21 3 views
1
from Tkinter import * 
    import tkFont 
    import Tkinter 
    import RPi.GPIO as GPIO 

    GPIO.setmode(GPIO.BCM) 
    GPIO.setup(10, GPIO.IN) 


    class PersamaanKuadrat: 
     def __init__(self, parent, title): 
      self.parent = parent 

      #self.parent.geometry("1280x560") 
      self.parent.title(title) 
      self.parent.protocol("WM_DELETE_WINDOW") 

      self.aturKomponen() 



     def aturKomponen(self): 

      self.customFont = tkFont.Font(family="Helvetica", size=18) 

      mainCanvas = Canvas(self.parent, width=1300, height=600, bg="grey") 
      mainCanvas.pack(fill=BOTH, expand=YES) 

      self.kanvas = mainCanvas 


      self.btnCariAkar = Button(mainCanvas, text="ENTER!", 
       command=exit) 
      self.btnCariAkar.place(relx=.25, rely=.25) 

      self.btn1= Button(mainCanvas, padx=30, pady=30, text="A1", bg="white") 
      self.btn1.place(relx=.65, rely=.25) 

      self.btn2 = Button(mainCanvas, padx=30, pady=30, text="A2", bg="white") 
      self.btn2.place(relx=.80, rely=.25) 

      self.btn3 = Button(mainCanvas, padx=30, pady=30, text="B1", bg="white") 
      self.btn3.place(relx=.65, rely=.55) 


      self.btn4 = Button(mainCanvas, padx=30, pady=30, text="B2", bg="white") 
      self.btn4.place(relx=.80, rely=.55) 

     def atur(self): 
      inputValue = GPIO.input(10) 
      if(inputValue == True): 
       self.btn1.configure(bg="yellow") 
      else: 
       self.btn1.configure(bg="red") 


    if __name__ == '__main__': 
     root = Tk() 

     aplikasi = PersamaanKuadrat(root, "T") 

     root.mainloop() 
  1. Je veux changer la couleur de btn1 en appuyant sur bouton-poussoir qui relié à la broche GPIO (broche 10), par exemple, si je pousse le bouton, le btn1 aura la couleur jaune, si je ne le pousse pas la couleur sera rouge. quand je cours le module il n'y a aucune erreur, et le programme fonctionne. mais quand j'ai appuyé sur le bouton, la couleur du btn1 n'a pas changé. Je ne peux pas trouver l'erreur, pouvez-vous tous m'aider.
  2. Si je veux ajouter une fonction de minuterie, par exemple après 30 secondes, la couleur de btn1 passera du jaune au rouge, est-ce possible?
  3. puis-je utiliser 'et' pour ce programme. Par exemple, si je veux utiliser 2 boutons pour passer au vert, que dois-je faire?

Besoin d'aide, parce que je suis un débutant pour cette chose framboise, :) merciChanger le widget de couleur en utilisant GPIO en framboise

Répondre

0

1) Je pense que vous avez besoin minuteur pour exécuter atur() pour tester si bouton-poussoir a été pressé. Maintenant, le programme ne sait pas que vous avez appuyé sur bouton-poussoir

En __init__() et atur():

self.parent.after(10, self.atur) 

2) Oui, il est possible avec self.parent.after(milliseconds, function_name)

3) Est-ce que vous voulez dire deux bouton-poussoir connecté à GPIO? Je pense que oui.


EDIT:

Exemple avec minuterie changeant btn2 couleur toutes les 500ms.
Je pense que maintenant le programme devrait changer btn1 couleur en appuyant sur le bouton-poussoir. (Non testé)

from Tkinter import * 
import tkFont 
import Tkinter 
import RPi.GPIO as GPIO 

GPIO.setmode(GPIO.BCM) 
GPIO.setup(10, GPIO.IN) 


class PersamaanKuadrat: 
    def __init__(self, parent, title): 
     self.parent = parent 

     #self.parent.geometry("1280x560") 
     self.parent.title(title) 
     self.parent.protocol("WM_DELETE_WINDOW") 

     self.aturKomponen() 

     self.parent.after(10, self.atur) 
     self.parent.after(500, self.change_color) 


    def aturKomponen(self): 

     self.customFont = tkFont.Font(family="Helvetica", size=18) 

     mainCanvas = Canvas(self.parent, width=1300, height=600, bg="grey") 
     mainCanvas.pack(fill=BOTH, expand=YES) 

     self.kanvas = mainCanvas 


     self.btnCariAkar = Button(mainCanvas, text="ENTER!", 
      command=exit) 
     self.btnCariAkar.place(relx=.25, rely=.25) 

     self.btn1= Button(mainCanvas, padx=30, pady=30, text="A1", bg="white") 
     self.btn1.place(relx=.65, rely=.25) 

     self.btn2 = Button(mainCanvas, padx=30, pady=30, text="A2", bg="white") 
     self.btn2.place(relx=.80, rely=.25) 

     self.btn3 = Button(mainCanvas, padx=30, pady=30, text="B1", bg="white") 
     self.btn3.place(relx=.65, rely=.55) 


     self.btn4 = Button(mainCanvas, padx=30, pady=30, text="B2", bg="white") 
     self.btn4.place(relx=.80, rely=.55) 

    def atur(self): 
     print "test push-button" 
     inputValue = GPIO.input(10) 
     if(inputValue == True): 
      self.btn1.configure(bg="yellow") 
     else: 
      self.btn1.configure(bg="red") 
     self.parent.after(10, self.atur) 

    def change_color(self): 
     print "change_color" 
     if self.btn2['bg'] == 'yellow': 
      self.btn2['bg'] = 'red' 
     else: 
      self.btn2['bg'] = 'yellow' 
     self.parent.after(500, self.change_color) 

if __name__ == '__main__': 
    root = Tk() 

    aplikasi = PersamaanKuadrat(root, "T") 

    root.mainloop() 
+0

Furas merci, il me aide beaucoup, je peux vous contacter, en fait, j'ai trouvé un nouveau problème, et je veux vous demander directement, si vous ne me dérange pas bien sûr :) – user3611502

+0

mon email: [email protected] – furas

Questions connexes