Python Tkinter图形用户界面画布
我正在做一个乐高头脑风暴项目,我们在那里创建一个GUI,可以用来控制机器人。我需要做的是创建一些东西,在每次移动后显示机器人的位置。我用画布画了一个矩形,然后画了一个点,显示机器人的当前位置。我有一大堆代码,但我只是向您展示一小部分与我的问题相关的代码Python Tkinter图形用户界面画布,python,canvas,tkinter,coordinates,Python,Canvas,Tkinter,Coordinates,我正在做一个乐高头脑风暴项目,我们在那里创建一个GUI,可以用来控制机器人。我需要做的是创建一些东西,在每次移动后显示机器人的位置。我用画布画了一个矩形,然后画了一个点,显示机器人的当前位置。我有一大堆代码,但我只是向您展示一小部分与我的问题相关的代码 from Tkinter import * class App: def __init__(self, master): frame = Frame(master) frame.pack() self.button
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个坐标的移动。有什么建议吗
我希望你理解这项任务和我的表述。感谢您的帮助 您的示例代码有几个问题,希望这个简单的示例能帮助您走上正轨:
from Tkinter import *
import random
class App(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.move_button = Button(self, text="Move", command=self.do_move)
self.move_button.pack()
self.random_button = Button(
self, text="Random!",
command=self.random_move)
self.random_button.pack()
self.canvas = Canvas(self, width=300, height=450)
self.canvas.config(
highlightbackground="grey",
borderwidth=2,
relief="flat")
self.canvas.pack()
self.canvas.create_oval(
150, 300, 160, 310, fill="blue", tag="Oval")
self.pack()
def do_move(self):
self.canvas.move("Oval", 10, 10)
def random_move(self):
x = random.randint(1, 290)
y = random.randint(1, 440)
self.canvas.coords("Oval", x, y, x+10, y+10)
root = Tk()
root.title("Mindstorms GUI")
root.geometry("400x600")
app = App(root)
root.mainloop()
请注意,Canvasmove
方法采用偏移量。或者,如果知道椭圆的新位置,可以使用坐标作为参数的coords
方法,但是请注意,坐标应该是坐标对的列表。我添加了一个随机按钮来显示如何使用coords
听起来像一个很酷的项目,玩得开心