Page 224 - Em Học Python
P. 224

​
                                      ​
               from tkinter import *
                    ​
               tk = Tk()
               canvas = Canvas(tk, width=400, height=400)
               canvas.pack()
               canvas.create_polygon(10, 10, 10, 60, 50, 35)
                   ​
                                   ​
               def movetriangle(event):
                    ​
                   if event.keysym == 'Up':
                                           ​
                    ​
                       ​
                                                ​
                       canvas.move(1, 0, -3)
                                             ​
                                                     ​
                    ​
                   elif event.keysym == 'Down':
                         ​
                       canvas.move(1, 0, 3)
                   elif event.keysym == 'Left':
                                             ​
                         ​
                    ​
                                                     ​
                       canvas.move(1, -3, 0)
                    ​
                         ​
                   else:
                       canvas.move(1, 3, 0)
                                   ​
               canvas.bind_all('<KeyPress-Up>', movetriangle)
                                                     ​
                                   ​
               canvas.bind_all('<KeyPress-Down>', movetriangle)
                                                       ​
                                   ​
               canvas.bind_all('<KeyPress-Left>', movetriangle)
                                                       ​
               canvas.bind_all('<KeyPress-Right>', movetriangle)
                                                        ​
                                   ​
                       Ở dòng đầu tiên của hàm  movetriangle, ta kiểm tra xem biến  keysym có chứa chữ
                                                               ​
                                                                                             ​
               'Up' không ở ❶. Nếu có, ta sẽ di chuyển hình tam giác đi lên trên bằng cách dùng hàm
                    ​
               move với các tham số  1, 0, -3 ở ❷. Tham số đầu tiên là số hiệu của tam giác, tham số thứ
                    ​
                                               ​
               hai là khoảng cách di chuyển sang phải (lúc này ta không cần đi ngang nên giá trị sẽ là 0),
               và tham số thứ ba là khoảng cách di chuyển đi lên (-3 điểm ảnh).
                       Sau đó ta kiểm tra xem  keysym có phải là  'Down' không ở ❸, nếu có thì ta di chuyển
                                                                        ​
                                                      ​
               xuống (3 điểm ảnh) ở ❹. Tiếp nữa ta kiểm tra xem có phải là  'Left' không ở ❺, nếu có ta
                                                                                     ​
               di chuyển sang trái (-3 điểm ảnh) ở ❻. Cuối cùng nếu không giá trị nào khớp, lệnh  else ở ❼
                                                                                                        ​
               sẽ di chuyển hình sang bên phải ở ❽.
                       Lúc này hình sẽ di chuyển tuỳ phím người dùng bấm.
               CÁC TRƯỜNG HỢP KHÁC CẦN DÙNG SỐ HIỆU


                       Bất cứ khi nào ta dùng hàm  create_ trên bảng vẽ, như  create_polygon hay
                                                            ​
                                                                                                ​
               create_rectangle, một số hiệu sẽ được trả về. Số hiệu này có thể được dùng cho các hàm
                                   ​
               khác trong canvas, như ta đã làm lúc trước với hàm  move:
                           ​
                                  ​
                                                                         ​



               198          Chương 12
                   ​
   219   220   221   222   223   224   225   226   227   228   229