Python Tkinter-不断更新变量,无需按下按钮
下面是我的python脚本: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
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代码,它的工作方式正是我想要的。谢谢