gpt4 book ai didi

python - 我们如何根据订阅的主题消息的变化动态改变Tkinter标签小部件中的文本?

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:01 26 4
gpt4 key购买 nike

我想根据我的节点订阅的主题消息更改我的标签文本。但问题是标签中的文字并没有随着主题消息的变化而变化。下面给出了我的部分代码:(我使用代码从 https://bytes.com/topic/python/answers/629499-dynamically-displaying-time-using-tkinter-label 动态更改标签中的文本)

v = StringVar()
v.set(distance)
self.clock = Label(frame, font=('times', 20, 'bold'), bg='green', textvariable = v)
self.clock.pack(fill=BOTH, expand=1)
rate = rospy.Rate(2)

while not rospy.is_shutdown():
rospy.Subscriber("distance", Float32, self.callback)
v.set(distance)
print("distance = %f", distance)
frame.update_idletasks()
rate.sleep()

最佳答案

好吧,您的代码(或者至少您发布的那部分代码)看起来很乱。

ROS 说话,

  • 在节点的初始化中定义你的订阅者(不是在里面while 循环,它会创建多个订阅者!)
  • 创建回调以获取在该主题下交换的消息 阅读消息
  • 相应地更新您的标签

话虽这么说,这里有一个代码应该是什么样子的例子:(填空)

#!/usr/bin/env python
import rospy
from std_msgs.msg import Float32

def callback(data):
distance = data.data
rospy.loginfo(rospy.get_caller_id() + "distance = ", distance )
#here update your label, I assume the following (maybe not correct)
v = StringVar()
v.set(distance)
self.clock = Label(frame, font=('times', 20, 'bold'), bg='green', textvariable = v)
self.clock.pack(fill=BOTH, expand=1)

def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("distance", Float32, self.callback)
# spin() simply keeps python from exiting until this node is stopped
rospy.spin()


if __name__ == '__main__':
listener()

关于python - 我们如何根据订阅的主题消息的变化动态改变Tkinter标签小部件中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37167238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com