91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

    庄河市| 县级市| 灌云县| 寻甸| 浙江省| 浮山县| 汉沽区| 贡山| 宁国市| 华池县| 长沙县| 博客| 建阳市| 广元市| 革吉县| 定兴县| 永福县| 泽库县| 林周县| 习水县| 泸水县| 建始县| 广州市| 邓州市| 通山县| 伊金霍洛旗| 宁津县| 嘉定区| 兰坪| 乐山市| 兖州市| 阿拉善左旗| 芮城县| 林芝县| 洪泽县| 乌苏市| 登封市| 保亭| 如皋市| 峨眉山市| 龙南县|