亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python使用canvas怎么實現移動并綁定鍵盤

發布時間:2021-12-20 19:18:50 來源:億速云 閱讀:147 作者:柒染 欄目:開發技術

python使用canvas怎么實現移動并綁定鍵盤,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

    一、任務

    用多個按鈕或者按鈕+文本框實現不同物體(橢圓,長方形,扇形)的各個方向的運動(上下左右)

    效果圖:

    python使用canvas怎么實現移動并綁定鍵盤

    二、實現

    (1)導庫并創建畫布

    import tkinter as tk
    window = tk.Tk()
    window.title('my window')
    ##窗口尺寸
    window.geometry('300x350')
    #新建畫布
    canvas=tk.Canvas(window,bg='blue',height=150,width=300)

    (2)畫圖形

    #畫線
    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=90)
    #畫一個矩形
    rect = canvas.create_rectangle(100, 30, 100+20, 30+20)   
    canvas.pack()

    (3)創建按鈕和文本框

    #創建文本框
    entry = tk.Entry(window, show=None)
    entry.pack()
    #創建文本
    label = tk.Label(window , text='圓:oval;線:line;扇形:arc;矩形 :rect')
    label.pack()  #打包
    #創建一個Button
    b=tk.Button(window,text='下',command=moveit)
    b.place(x=120,y=280)
    up=tk.Button(window,text='上',command=moveup)
    up.place(x=120,y=220)
    left=tk.Button(window,text='左',command=moveleft)
    left.place(x=80,y=250)
    right=tk.Button(window,text='右',command=moveright)
    right.place(x=160,y=250)

    (4)功能實現

    #向下移動
    def moveit():
        obj = entry.get()  #獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,0,2)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, 0, 2)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, 0, 2)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line, 0, 2)
    #向上移動
    def moveup():
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,0,-2)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc,0,-2)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval,0,-2)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line,0,-2)
    #向左移動
    def moveleft():
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect, -2 ,0)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, -2 ,0)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, -2 ,0)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line, -2, 0)
    #向右移動
    def moveright():
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,2,0)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, 2,0)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, 2,0)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line , 2, 0)

    三、完整代碼

    import tkinter as tk
    window = tk.Tk()
    window.title('my window')
    ##窗口尺寸
    window.geometry('300x350')
    #新建畫布
    canvas=tk.Canvas(window,bg='blue',height=150,width=300)
    #畫線
    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=90)
    #畫一個矩形
    rect = canvas.create_rectangle(100, 30, 100+20, 30+20)   
    canvas.pack()
    #創建文本框
    entry = tk.Entry(window, show=None)
    entry.pack()
    #創建文本
    label = tk.Label(window , text='圓:oval;線:line;扇形:arc;矩形 :rect')
    label.pack()  #打包
    #向下移動
    def moveit():
        obj = entry.get()  #獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,0,2)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, 0, 2)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, 0, 2)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line, 0, 2)
    #向上移動
    def moveup():
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,0,-2)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc,0,-2)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval,0,-2)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line,0,-2)
    #向左移動
    def moveleft():
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect, -2 ,0)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, -2 ,0)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, -2 ,0)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line, -2, 0)
    #向右移動
    def moveright():
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,2,0)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, 2,0)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, 2,0)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line , 2, 0)
    #創建一個Button
    b=tk.Button(window,text='下',command=moveit)
    b.place(x=120,y=280)
    up=tk.Button(window,text='上',command=moveup)
    up.place(x=120,y=220)
    left=tk.Button(window,text='左',command=moveleft)
    left.place(x=80,y=250)
    right=tk.Button(window,text='右',command=moveright)
    right.place(x=160,y=250)
    ##顯示出來
    window.mainloop()

    四、升級—綁定鍵盤事件

    增加鍵盤綁定事件:

    # 實現鍵盤綁定
    window.bind("<KeyPress-Down>", moveit)  #第二個參數傳一個回調函數
    window.bind("<KeyPress-Left>", moveleft)
    window.bind("<KeyPress-Right>", moveright)
    window.bind("<KeyPress-Up>", moveup)

    完整代碼:

    import tkinter as tk
    window = tk.Tk()
    window.title('my window')
    ##窗口尺寸
    window.geometry('300x350')
    #新建畫布
    canvas=tk.Canvas(window,bg='blue',height=150,width=300)
    #畫線
    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=90)
    #畫一個矩形
    rect = canvas.create_rectangle(100, 30, 100+20, 30+20)   
    canvas.pack()
    #創建文本框
    entry = tk.Entry(window, show=None)
    entry.pack()
    #創建文本
    label = tk.Label(window , text='圓:oval;線:line;扇形:arc;矩形 :rect')
    label.pack()  #打包
    #向下移動
    def moveit(event):
        obj = entry.get()  #獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,0,2)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, 0, 2)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, 0, 2)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line, 0, 2)
    #向上移動
    def moveup(event):
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,0,-2)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc,0,-2)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval,0,-2)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line,0,-2)
    #向左移動
    def moveleft(event):
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect, -2 ,0)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, -2 ,0)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, -2 ,0)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line, -2, 0)
    #向右移動
    def moveright(event):
        obj = entry.get()  # 獲取輸入框的參數,移動那個圖形
        if obj =='rect':
            canvas.move(rect,2,0)  #第一個參數是圖形
        elif obj == 'arc':
            canvas.move(arc, 2,0)  # 第一個參數是圖形
        elif obj =='oval':
            canvas.move(oval, 2,0)  # 第一個參數是圖形
        elif obj == 'line':
            canvas.move(line , 2, 0)
    #創建一個Button
    b=tk.Button(window,text='下',command=moveit)
    b.place(x=120,y=280)
    up=tk.Button(window,text='上',command=moveup)
    up.place(x=120,y=220)
    left=tk.Button(window,text='左',command=moveleft)
    left.place(x=80,y=250)
    right=tk.Button(window,text='右',command=moveright)
    right.place(x=160,y=250)
    # 實現鍵盤綁定
    window.bind("<KeyPress-Down>", moveit)  #第二個參數傳一個回調函數
    window.bind("<KeyPress-Left>", moveleft)
    window.bind("<KeyPress-Right>", moveright)
    window.bind("<KeyPress-Up>", moveup)
    ##顯示出來
    window.mainloop()

    看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    彭州市| 翼城县| 定日县| 永年县| 洪泽县| 朝阳市| 漾濞| 城步| 陆河县| 朔州市| 枣阳市| 太保市| 株洲市| 南木林县| 如皋市| 宣汉县| 绍兴县| 上思县| 桑日县| 莎车县| 满城县| 科技| 会宁县| 勃利县| 健康| 和林格尔县| 古浪县| 金阳县| 荆门市| 大宁县| 昌都县| 岳西县| 阳曲县| 荔浦县| 玉龙| 乌什县| 龙南县| 华蓥市| 宝山区| 天津市| 梅河口市|