单击 tkinter 按钮时更改图片
Change picture when tkinter button clicked
我在 python 3 中使用 tkinter 生成一些按钮和一些标签,这些按钮和标签在单击按钮时会改变颜色(并在 Rasp pi 上打开一个 GPIO 引脚)
是否可以更改单击按钮时按钮使用的 .gif?我希望它在 GPIO 引脚关闭时显示 ON,在 GPIO 引脚打开时显示 OFF。
目前我有:
#BCM17
GPIO.setup(17,GPIO.OUT)
colour17=StringVar()
pinstate17=GPIO.input(17)
if pinstate17==1:
colour17.set('red')
else:
colour17.set('green')
BCM17Bimage=tk.PhotoImage(file='on.gif')
BCM17B = Button(clock, text="GPIO 0\nBCM 17", image=BCM17Bimage, width=78, height=100, bg="grey", command=BCM17f).grid(column=2, row=1)
BCM17L = Label(clock, text="GPIO 0\nBCM 17", font=(fontname,12), fg='white', bg=colour17.get(), width=10, height=2)
BCM17L.grid(column=0, row=1)
而且,按钮的定义是:
def BCM17f():
pinstate17=GPIO.input(17)
colour17.set('red' if pinstate17==0 else 'green')
BCM17L.configure(bg=colour17.get())
if pinstate17==0:
GPIO.output(17,True)
else:
GPIO.output(17,False)
print(pinstate17)
顺便说一句 - 当人们在这里回复 post 时是否可以收到电子邮件?看起来不错,但在任何地方都看不到它的选项。
已解决:
#BCM17
GPIO.setup(17,GPIO.OUT)
colour17=StringVar()
pinstate17=GPIO.input(17)
if pinstate17==1:
colour17.set('red')
else:
colour17.set('green')
BCM17L = Label(clock, text="GPIO 0\nBCM 17", font=(fontname,12), fg='white', bg=colour17.get(), width=10, height=2)
BCM17L.grid(column=0, row=1)
image17on=tk.PhotoImage(file="on.gif")
image17off=tk.PhotoImage(file="off.gif")
if pinstate17==1:
image17=image17on
else:
image17=image17off
BCM17B = Button(clock, text="GPIO 0\nBCM 17",
image=image17,
width=75, height=75, bg="grey",
command=BCM17f)
BCM17B.grid(column=2, row=1)
默认:
def BCM17f():
pinstate17=GPIO.input(17)
colour17.set('red' if pinstate17==0 else 'green')
BCM17L.configure(bg=colour17.get())
global toggle17
if toggle17 and pinstate17==1:
GPIO.output(17,False)
BCM17B.config(image=image17off)
toggle17 = not toggle17
else:
GPIO.output(17,True)
BCM17B.config(image=image17on)
toggle17 = not toggle17
我在 python 3 中使用 tkinter 生成一些按钮和一些标签,这些按钮和标签在单击按钮时会改变颜色(并在 Rasp pi 上打开一个 GPIO 引脚)
是否可以更改单击按钮时按钮使用的 .gif?我希望它在 GPIO 引脚关闭时显示 ON,在 GPIO 引脚打开时显示 OFF。
目前我有:
#BCM17
GPIO.setup(17,GPIO.OUT)
colour17=StringVar()
pinstate17=GPIO.input(17)
if pinstate17==1:
colour17.set('red')
else:
colour17.set('green')
BCM17Bimage=tk.PhotoImage(file='on.gif')
BCM17B = Button(clock, text="GPIO 0\nBCM 17", image=BCM17Bimage, width=78, height=100, bg="grey", command=BCM17f).grid(column=2, row=1)
BCM17L = Label(clock, text="GPIO 0\nBCM 17", font=(fontname,12), fg='white', bg=colour17.get(), width=10, height=2)
BCM17L.grid(column=0, row=1)
而且,按钮的定义是:
def BCM17f():
pinstate17=GPIO.input(17)
colour17.set('red' if pinstate17==0 else 'green')
BCM17L.configure(bg=colour17.get())
if pinstate17==0:
GPIO.output(17,True)
else:
GPIO.output(17,False)
print(pinstate17)
顺便说一句 - 当人们在这里回复 post 时是否可以收到电子邮件?看起来不错,但在任何地方都看不到它的选项。
已解决:
#BCM17
GPIO.setup(17,GPIO.OUT)
colour17=StringVar()
pinstate17=GPIO.input(17)
if pinstate17==1:
colour17.set('red')
else:
colour17.set('green')
BCM17L = Label(clock, text="GPIO 0\nBCM 17", font=(fontname,12), fg='white', bg=colour17.get(), width=10, height=2)
BCM17L.grid(column=0, row=1)
image17on=tk.PhotoImage(file="on.gif")
image17off=tk.PhotoImage(file="off.gif")
if pinstate17==1:
image17=image17on
else:
image17=image17off
BCM17B = Button(clock, text="GPIO 0\nBCM 17",
image=image17,
width=75, height=75, bg="grey",
command=BCM17f)
BCM17B.grid(column=2, row=1)
默认:
def BCM17f():
pinstate17=GPIO.input(17)
colour17.set('red' if pinstate17==0 else 'green')
BCM17L.configure(bg=colour17.get())
global toggle17
if toggle17 and pinstate17==1:
GPIO.output(17,False)
BCM17B.config(image=image17off)
toggle17 = not toggle17
else:
GPIO.output(17,True)
BCM17B.config(image=image17on)
toggle17 = not toggle17