我有一個問題https://prnt.sc/1znuffv用tkinter,我需要它從0到180度,使“檢查點”,每30度達到,我得到了幫助本網站上成功地完成,達到0-180和背部但不能做到 30 × 30。
import tkinter as tk
root = tk.Tk()
root.geometry("800x800")
root.resizable(0, 0)
s = 0
def menjajKanvas(arc):
global s
if s < 180:
s =1
c.itemconfig(arc,extent=s,fill="red")
root.after(10,menjajKanvas,arc)
else:
shrink_arc(arc)
def shrink_arc(arc):
global s
if s >= 0:
s-=1
c.itemconfig(arc,extent=s,fill="red")
root.after(10,shrink_arc,arc)
else:
root.after(10,menjajKanvas,arc)
c = tk.Canvas(root, height=250, width=300, bg="blue")
c.pack()
arc = c.create_arc(10,50,240,210,
extent=150,
outline="red",
fill='red',
tags=("arc",))
menjajKanvas(arc)
root.mainloop()
uj5u.com熱心網友回復:
您可以在通過tk.after以下方式發出的函式呼叫中使用可變延遲:
像這樣:
import tkinter as tk
def menjajKanvas(arc):
global s
if s < 180:
s = 1
c.itemconfig(arc, extent=s,f ill="red")
delay = 10 if s % 30 else 1000
root.after(delay, menjajKanvas, arc)
else:
root.after(1000, shrink_arc, arc)
def shrink_arc(arc):
global s
if s >= 0:
s -= 1
c.itemconfig(arc, extent=s, fill="red")
delay = 10 if s % 30 else 1000
root.after(delay, shrink_arc, arc)
else:
root.after(1000, menjajKanvas, arc)
if __name__ == '__main__':
root = tk.Tk()
root.geometry("800x800")
root.resizable(0, 0)
s = 0
c = tk.Canvas(root, height=250, width=300, bg="blue")
c.pack()
arc = c.create_arc(
10, 50, 240, 210,
extent=150,
outline="red",
fill='red',
tags=("arc",))
menjajKanvas(arc)
root.mainloop()
您可以避免兩個函式中的重復代碼menjajKanvas,并shrink_arc使用下面increment_arc描述的以下新函式: 但是,對于初學者來說,“正確”變得更加困難,并且出于同樣的原因,可讀性也可能較差。
def increment_arc(arc, increment=-1):
global s
if s % 30 != 0:
delay = 10 # sets short delay if arc not a multiple of 30
else:
delay = 1000 # otherwise sets a longer delay
if s == 0 or s == 180: # reverse the action when we reach 0, or 180
increment = - increment
s = increment
c.itemconfig(arc, extent=s, fill="red")
root.after(delay, increment_arc, arc, increment)
and replace the initial call (menjajKanvas(arc)) with root.after(10, increment_arc, arc)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357566.html
下一篇:在Python中繪制正方形
