【发布时间】:2013-12-28 09:15:19
【问题描述】:
我正在开发一个 Lego Mindstorms 项目,我们在该项目中创建了一个可用于控制机器人的 GUI。我需要做的是创建一些东西来显示机器人在每次移动后的位置。我正在使用画布绘制一个矩形,然后绘制一个显示机器人当前位置的点。我有一大堆代码,但我只是向您展示与我的问题相关的一小部分。
from Tkinter import *
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(frame, text="Move", command=lambda: do_move())
self.button.pack(side=TOP)
self.canvas = Canvas(master, width=300, height=450)
self.canvas.place(x=250, y=550)
self.canvas.create_rectangle(0, 0, 300, 450, fill="white")
self.canvas.create_oval(150, 300, 160, 310, fill="blue", tags="Position")
x, y = self.canvas.coords("Position")
x = int(x)
y = int(y)
x2 = self.canvas.canvasx(self.x)
y2 = self.canvas.canvasy(self.y)
x2 = int(x2)
y2 = int(y2)
def move_forward():
self.canvas.move(Position, x2, y2)
def move_backwards():
self.canvas.move(Position, , )
root = Tk()
app = App(root)
root.title("Mindstorms GUI")
root.geometry("800x1200")
root.mainloop()
root.destroy()
对于我有一个按钮的移动功能,我选择一个值,该值将向前/向后移动机器人。当机器人移动时,我还想移动画布上的蓝色圆圈。 X 和 Y 是圆当前位置的坐标,其余关于 X2 和 Y2 的坐标取自另一个站点。我不太确定你为什么要写 x=int(x),而且我不太了解 X2 和 Y2 的部分。关于如何编写其余代码的任何解释和建议?
我最后定义的第一个新函数将与我的移动按钮一起使用,这样我就有两个按钮命令。当我单击按钮时,位置圆也将移动到新坐标。我还需要在某处写下我用于移动功能的单位的特定值等于例如在我的画布中移动 5 个坐标。关于如何做到这一点的任何提示?
我希望你能理解任务和我的表述。任何帮助表示赞赏!
【问题讨论】:
标签: python canvas tkinter coordinates