所以这是我的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
的值以及滑块移动,而无需按按钮进行更新?
答案 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()