Tkinter - 不断按下按钮

时间:2017-03-28 01:32:41

标签: python tkinter raspberry-pi gpio

所以这是我的python脚本:

from Tkinter import *
#import RPi.GPIO as GPIO

#GPIO.setmode(GPIO.BOARD)
#GPIO.setup(12, GPIO.OUT)

#p = GPIO.PWM(12, 50)
#p.start(0)

def cmd():
   speed = "Rotor speed= " + str(var.get())
   label.config(text = speed)
   #dc = int(var.get())
   #p.ChangeDutyCycle(dc)

tk = Tk()
var = DoubleVar()
scale = Scale(tk, from_=100, to=0, variable = var)
scale.pack(anchor=CENTER)
button = Button(tk, text="Set speed", command=cmd)
button.pack(anchor=CENTER)
label = Label(tk)
label.pack()

tk.mainloop()

print("Closing the program and cleaning up the GPIO")
#p.stop()
#GPIO.cleanup()

目前有些部分已经注释掉了,因为我正在处理PC上的代码,而不是Raspberry Pi。我把它留给了上下文。

所以这段代码为我的直升机创建了一个非常简单的GUI。它工作正常,但要改变我的PWM引脚(cmd()功能)的占空比,我必须按下按钮。

我试图让我的程序自动检查滑块的值,但我无法弄清楚。

任何想法如何更改此代码以更改dc的值以及滑块移动,而无需按按钮进行更新?

1 个答案:

答案 0 :(得分:2)

您可以这样做:由于Scale也有一个command参数(每次修改比例时调用),它在调用时也会传递scale.get()的值。这样,你可以摆脱你的按钮。

from Tkinter import *
def cmd(speed):
    speed_text = "Rotor speed= " + str(speed)
    label.config(text = speed_text)
    # or you can change it like this(many people prefers this way more):
    # label['text'] = speed_text
    # dc = speed

tk = Tk()
var = DoubleVar()
scale = Scale(tk, from_=100, to=0, variable = var, command=cmd)
scale.pack(anchor=CENTER)
label = Label(tk)
label.pack()

tk.mainloop()