Python Tkinter-不断更新变量,无需按下按钮

Python Tkinter-不断更新变量,无需按下按钮,python,tkinter,raspberry-pi,gpio,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(v

下面是我的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()
现在有些部分被注释掉了,因为我正在我的电脑上编写代码,而不是Raspberry Pi。我把它们留给上下文

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

我试图让我的程序自动检查滑块的值,但我就是想不出来


您知道如何更改此代码以随滑块移动更改
dc
的值,而不必按按钮进行更新吗?

您可以这样做:因为
Scale
还有一个
命令
参数(每次修改比例时都会调用该参数),调用时,它还传递
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()

您可以这样做:因为
Scale
还有一个
命令
参数(每次修改Scale时都会调用该参数),所以调用时它也会传递
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()

请您澄清一下,随滑块移动改变dc值是什么意思?
dc
是插脚12上的占空比。对于当前程序,当我按下按钮时,它将
dc
更改为滑块的任何值。我想做的是在不按下按钮的情况下自动轮询滑块的位置,因此
dc
的值将始终与滑块的值相匹配。基本上现在我每次要执行时都必须按下按钮:
dc=int(var.get())
,这很有效,但并不理想。我希望该值始终与滑块匹配。请澄清随滑块移动而更改dc值的意思是什么?
dc
是插脚12上的占空比。对于当前程序,当我按下按钮时,它将
dc
更改为滑块的任何值。我想做的是在不按下按钮的情况下自动轮询滑块的位置,因此
dc
的值将始终与滑块的值相匹配。基本上现在我每次要执行时都必须按下按钮:
dc=int(var.get())
,这很有效,但并不理想。我希望该值始终与滑块匹配。谢谢。我已经添加了所有的GPIO代码,它的工作方式正是我想要的。谢谢你。我已经添加了所有的GPIO代码,它的工作方式正是我想要的。谢谢