2.7キャンバスキャンバス
実行後の効果は下図のようになりますが、
移動ボタンをクリックすると以下のようになります。
キャンバスウィジェット
canvas = tk.Canvas(window, bg='blue', height=100, width=200)
canvas.pack()
ここでのパラメータは、以前に学習したコンポーネントと同じであるため、個別の説明は省略します。インスタグラムのアイコンをダウンロードしたい場合は、下の画像を右クリックして保存してください。
image_file = tk.PhotoImage(file='ins.gif')
image = canvas.create_image(10, 10, anchor='nw', image=image_file)
ここのコードは主に、最終的に表示される左上隅の小さな画像を実現することです。この文は、この画像image_file = tk.PhotoImage(file='ins.gif')
を保存するための変数を作成します。中のパラメータはキャンバスに絵を配置する座標で、ここでは絵の左上をアンカーポイントとして、与えられた座標を加算することで絵の位置が決まります。最後のパラメータの意味は、保存したばかりのイメージ変数を に割り当てることです。ins.gif
image = canvas.create_image(10, 10, anchor='nw', image=image_file)
10,10
anchor=nw
image
x0, y0, x1, y1= 50, 50, 80, 80
line = canvas.create_line(x0, y0, x1, y1)
このコードの主な目的は直線を描くことです。()
次のパラメータは線分の 2 点の座標です。この 2 点によって直線が決定されます。ここで与えられているのは、座標 (50,50) から (80,80) まで直線を引くことです。
oval = canvas.create_oval(x0, y0, x1, y1, fill='red') #创建一个圆,填充色为`red`红色
arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=180) #创建一个扇形
rect = canvas.create_rectangle(100, 30, 100+20, 30+20) #创建一个矩形
扇形を作成するときに2 つの新しいパラメータstart=0
が追加されていextent=180
ます。実際には、扇の側面が開いているのと同じように、0 度から 180 度まで変化します。私たちの見方では半円ですが、変更するとextent=90
1/4 円の
トリガー関数が表示されます。
def moveit():
canvas.move(rect, 0, 2)
ここでのトリガーは、前の print_selection ではなくなりました (笑) では、これはどのような関数ですか? まず、単語の理解という観点から見ると、これは動きの関数です。それはビデオでも実証されています。 、長方形をクリックするたびにbutton
、ここで移動するcanvas.move(rect, 0, 2)
パラメータはこの変数、つまり、表示されている長方形の後ろの 0 と 2 を移動することです。つまり、横座標は 0 単位、縦座標は 2 単位移動します(rect,0,2)
。rect
簡単に言うと、クリックするたびに横方向に移動するのではなく、縦方向に2単位ずつ移動します。
コード
import tkinter as tk
window = tk.Tk()
window.title('my window')
window.geometry('200x200')
canvas = tk.Canvas(window, bg='blue', height=100, width=200)
image_file = tk.PhotoImage(file='ins.gif')
image = canvas.create_image(10, 10, anchor='nw', image=image_file)
x0, y0, x1, y1= 50, 50, 80, 80
line = canvas.create_line(x0, y0, x1, y1)
oval = canvas.create_oval(x0, y0, x1, y1, fill='red')
arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=180)
rect = canvas.create_rectangle(100, 30, 100+20, 30+20)
canvas.pack()
def moveit():
canvas.move(rect, 0, 2)
b = tk.Button(window, text='move', command=moveit).pack()
window.mainloop()