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

Tkinter - update variable constantly, without pressing the button

所以这是我的 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 的值以及滑块移动的任何想法,而无需按下按钮来更新它?

你可以这样做:因为 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()