PxExl-9. PYTHON TKINTER (P9: SỬ DỤNG CANVAS CLASS)

I. Sử dụng Class Canvas tạo hình khối trong Tkinter

Cú pháp:
Canvas Methods for shapes: 
Canvas.create_oval(x1, y1, x2, y2, options = …): It is used to create a oval, pieslice and chord. 
Canvas.create_rectangle(x1, y1, x2, y2, options = …): It is used to create rectangle and square. 
Canvas.create_arc(x1, y1, x2, y2, options = …) This is used to create an arc. 
Canvas.create_polygon(coordinates, options = …) THis is used to create any valid shapes. 

Cấu trúc chung:
Data members used: master, canvas
Member functions used: create() method
Widgets used: Canvas
Tkinter method used:
Canvas.create_oval() 
Canvas.create_rectangle() 
Canvas.create_arc() 
Canvas.create_polygon() 
pack() 
title() 
geometry() 

Ví dụ 1 (Tạo hình bằng class canvas)

# Imports each and every method and class
# of module tkinter and tkinter.ttk
from tkinter import * 
from tkinter.ttk import *
class Shape:
    def __init__(self, master = None):
        self.master = master
        # Calls create method of class Shape
        self.create()  
    def create(self):     
        # Creates a object of class canvas
        # with the help of this we can create different shapes
        self.canvas = Canvas(self.master)
        # Creates a circle of diameter 80
        self.canvas.create_oval(10, 10, 80, 80,
                            outline = “black”, fill = “white”,
                            width = 2)
        # Creates an elipse with horizontal diameter
        # of 210 and vertical diameter of 80
        self.canvas.create_oval(110, 10, 210, 80,
                            outline = “red”, fill = “green”,
                            width = 2)
        # Creates a rectangle of 50×60 (heightxwidth)
        self.canvas.create_rectangle(230, 10, 290, 60,
                                outline = “black”, fill = “blue”,
                                width = 2)
        # Creates an arc of 210 deg
        self.canvas.create_arc(30, 200, 90, 100, start = 0,
                        extent = 210, outline = “green”,
                        fill = “red”, width = 2) 
        points = [150, 100, 200, 120, 240, 180,
                210, 200, 150, 150, 100, 200]
        # Creates a polygon
        self.canvas.create_polygon(points, outline = “blue”,
                            fill = “orange”, width = 2)
        # Pack the canvas to the main window and make it expandable
        self.canvas.pack(fill = BOTH, expand = 1)
if __name__ == “__main__”:
    # object of class Tk, resposible for creating
    # a tkinter toplevel window
    master = Tk()
    shape = Shape(master)
    # Sets the title to Shapes
    master.title(“Shapes”)
    # Sets the geometry
    master.geometry(“300×300”)
    # Infinite loop breaks only by interrupt
    mainloop()

II. Giải thích 1 số nội dung trong Code ở phần I

Trong ví dụ ở phần I, có sử dụng đoạn code:
class Shape:
   def __init__(seft, master=None):
    self.master = master
    seft.creat()
Code này liên quan đến việc khởi tạo constructor trong Python:
Constructor trong Python là một loại phương thức (hàm) đặc biệt được sử dụng để khởi tạo các thể hiện của lớp. Constructor có thể có hai loại:

  1. Constructor tham số.
  2. Constructor không tham số.

Trong python, phương thức __ init __ mô phỏng contructor của lớp. Phương thức này được gọi khi lớp được khởi tạo. Chúng ta có thể chuyển bất kỳ số lượng đối số nào tại thời điểm tạo đối tượng lớp, tùy thuộc vào định nghĩa __ init __. Nó chủ yếu được sử dụng để khởi tạo các thuộc tính của lớp. Mỗi lớp phải có một constructor. 
Mời các bạn xem ví dụ dưới đây:

Ví dụ 2 (Constructor trong Python):

class Employee:
    #__init__ khởi tạo 1 thể hiện của 1 lớp
   # self đại diện cho chính đối tượng
    def __init__(self, name, id): 
        self.id = id #self.id là id của đối tượng
        self.name = name
    def display (self):
        print(“ID: %d \nName: %s” % (self.id, self.name))
emp1 = Employee(“Nhuần”, 100)
emp2 = Employee(“Đạt”, 101)
# gọi phương thức display() để hiển thị thông tin employee 1
emp1.display()
# gọi phương thức display() để hiển thị thông tin employee 2
emp2.display()
 

Kết quả trả ra như hình

Đoạn code:
if __name__ == “__main__”:

Hiểu đơn giản là biến __name__ là một biến được tự động sinh ra trong mỗi một file .py có giá trị bằng đúng tên của file .py đó. `Dạng name.py => Ví dụ: daynhauhoc.py có chứa name = “daynhauhoc”“

 __main__ là một giá trị được tự động sinh ra khi một process python được chạy. Nó có giá trị bằng đúng tên của file đang chiếm quyền thực thị.

Việc sử dụng kĩ thuật trên dùng để xác định xem đoạn code có được chạy trong file đang chiếm quyền thực thi hay không. Hay là chạy thông qua việc được import và được gọi đến bởi file đang chiếm quyền thực thị.

III. Kết Luận

Như vậy, chúng tôi đã tiếp tục giới thiệu tới các bạn các khái niệm cơ bản của Tkinter trong Python. Nếu có vấn đề nào chưa rõ, các bạn hãy liên hệ với chúng tôi để được giúp đỡ.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *