2017-04-06 25 views
0

我寫,通過的次數移動六邊形形狀的程序。
但我認爲它看起來很髒。
所以我想減少長度,我想寫的效率,這是最好的?(Python的GUI)如何可以寫短和高效代碼

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) 

回答

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) 
+0

@LinuxUbuntu嗨,如果這或任何回答已經解決了您的問題,請考慮[接受它( https://meta.stackexchange.com/q/5234/179419)點擊複選標記。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 – Surajano