我在制作一个Rubik的幻灯片游戏。基本上,4个方格可以移动的动作是右,左,上,下,顺时针,逆时针。用tkinter在画布上旋转形状(python 3)
我正在做的第一个按钮/移动是顺时针。按钮使所有的方块顺时针平移一次,但是我怎样才能使它每次按下时都能保持移位?
顺时针方向移动是第一个功能,然后按顺时针方向按钮调用。
从Tkinter的进口* 从Tkinter的进口TTK
# --- Functions ---
def clockwise_move():
canvas.coords(square1, 500, 2, 250, 250)
canvas.coords(square2, 500, 490, 249, 250)
canvas.coords(square3, 2, 2, 249, 249)
canvas.coords(square4, 2, 490, 249, 250)
# --- Setup ---
main = Tk()
main.title("Rubik's Slide")
main.resizable(width=FALSE, height=FALSE)
main.geometry("700x550")
# --- Objects ---
frame = ttk.Frame(main)
button_frame = ttk.Frame(frame)
canvas = Canvas(frame, width=500, height=700)
# squares
square1 = canvas.create_rectangle(2, 2, 249, 249, fill="red")
square2 = canvas.create_rectangle(500, 2, 250, 250, fill="white")
square3 = canvas.create_rectangle(2, 490, 249, 250, fill="blue")
square4 = canvas.create_rectangle(500, 490, 250, 250, fill="black")
# buttons
right = ttk.Button(button_frame, text="Right", command=clockwise_move).grid(column=2, row=1)
left = ttk.Button(button_frame, text="Left").grid(column=2, row=2)
up = ttk.Button(button_frame, text="Up").grid(column=3, row=1)
down = ttk.Button(button_frame, text="Down").grid(column=3, row=2)
clockwise = ttk.Button(button_frame, text="Clockwise").grid(column=2, row=3)
counter_clockwise = ttk.Button(button_frame, text="Counterclock").grid(column=3, row=3)
start = ttk.Button(button_frame, text="Start").grid(column=2, row=4)
reset = ttk.Button(button_frame, text="Reset").grid(column=3, row=4)
# frame grid
frame.grid(column=1, row=1)
canvas.grid(column=1, row=1)
button_frame.grid(column=2, row=1)
# misc settings
for child in button_frame.winfo_children():
child.grid_configure(padx=10, pady=20)
main.mainloop() # end of GUI
它为什么保持旋转?我怎么才能使它只是旋转一次,而不是再次,直到我再次按下按钮? – frankehhh
另外,我会如何为不同的方向呢?我没有看到运动正在进行 – frankehhh
@frankehhh根据你的问题,我认为你真的想在按下按钮时保持旋转。你可以简单地删除这条线'after_id = e.widget.after(1000,clockwise_move,e)',你也可以删除这条线'clockwise.bind(“,stop)'。另外,你不需要函数'stop'和变量'after_id'。 –
nbro