2016-08-16 6 views
-2

をクリック画像を変更Tkinterのボタンは、私はボタンがクリックされたときに、いくつかのボタンや色を変更し、いくつかのラベルを作成(とあまりにもやすりのパイの上にGPIOピンをオン)するのpython 3でのTkinterを使用してい

されていますボタンをクリックしたときにボタンが使用する.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は次のとおりです。あまりにも

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) 

ランダムさておき - 人々がに返信するときに電子メールを取得することが可能ですここに投稿しますか?見栄えは良かったですが、どこでもオプションを見ることはできません。

+0

あなたがこの質問をする前に、サイトを検索しましたか?このサイトには、ウィジェットの画像を変更することに関連する多くの質問があります。 –

+0

うん、私はこれを具体的に言及したものは見つけられませんでした。 – Jon

答えて

0

は、それを解決します。defと

#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 
関連する問題