(Python GUI)如何编写简短而有效的代码

时间:2017-04-06 05:39:55

标签: python user-interface tkinter

我写了一个程序,将六边形形状移动了多次 但我觉得它看起来很脏 所以我想减少长度,我想有效地写,这是最好的吗?

import time
from tkinter import*
tk = Tk()
canvas=Canvas(tk, width=1000, height=1000, background="black")
canvas.pack()
canvas.create_polygon(300,200,300,250,340,225,fill="yellow")

k = int(input("input value"))
for q in range(0,k):    
    for x in range(0,10):
    canvas.move(1,5,0)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,5,5)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,-5,5)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,-5,0)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,-5,-5)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,5,-5)
    tk.update()
    time.sleep(0.03)

1 个答案:

答案 0 :(得分:3)

for x in range(0,10):
    canvas.move(1,5,5)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,-5,5)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,-5,0)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,-5,-5)
    tk.update()
    time.sleep(0.03)
for x in range(0,10):
    canvas.move(1,5,-5)
    tk.update()
    time.sleep(0.03)

将上述代码移到函数中,这样就不会编写冗余代码

def TKUptake(minRange, maxRange, CanvasMove, sleepTime):
    """
    minRange : (Int) Min range for list = 0
    maxRange : (Int) Max range for list = 10
    CanvasMove : Dict for canvas move
    canvasMove[x]= 1
    canvasMove[y]= 5
    canvasMove[z]=-5
    """
    for x in range(minRange, maxRange):
        canvas.move(CanvasMove[x],CanvasMove[y],CanvasMove[z])
        tk.update()
        time.sleep(sleeptime)