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()
需要帮助,因为我是这个覆盆子的新手,谢谢:)
答案 0 :(得分:0)
1)我认为您需要计时器才能运行atur()
来测试是否按下了按钮。现在程序还不知道你按了按钮
在__init__()
和atur()
中:
self.parent.after(10, self.atur)
2)是的,可以使用self.parent.after(milliseconds, function_name)
3)你的意思是两个按钮连接到GPIO?我想是的。
修改强>
计时器每500毫秒改变btn2
颜色的示例
我认为现在程序应该通过按下按钮来改变btn1
颜色。 (未经测试)
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()