Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?


Canvas là một khu vực hình chữ nhật nhằm vẽ hình ảnh hoặc các bố cục phức tạp khác. Bạn có thể đặt đồ họa, văn bản, widget hoặc khung trên vải.

Cú pháp

Đây là cú pháp đơn giản để tạo tiện ích này -

w = Canvas ( master, option=value, ... )

Thông số

  • Master - điều này đại diện cho cửa sổ cha mẹ. − This represents the parent window.

  • Tùy chọn - Đây là danh sách các tùy chọn được sử dụng phổ biến nhất cho tiện ích này. Các tùy chọn này có thể được sử dụng làm cặp giá trị khóa được phân tách bằng dấu phẩy. − Here is the list of most commonly used options for this widget. These options can be used as key-value pairs separated by commas.

Sr.No.Tùy chọn & Mô tả
1

BD

Chiều rộng biên giới tính theo pixel. Mặc định là 2.

2

BG

Màu nền bình thường.

3

giới hạn

Nếu đúng (mặc định), vải không thể được cuộn bên ngoài cuộn.

4

con trỏ

Con trỏ được sử dụng trong khung vẽ như mũi tên, vòng tròn, dấu chấm, v.v.

5

Chiều cao

Kích thước của vải trong kích thước y.

6

Điểm nổi bật

Màu sắc hiển thị trong điểm nhấn tiêu điểm.

7

sự cứu tế

Cứu trợ chỉ định loại biên giới. Một số giá trị là chìm, nâng, rãnh và sườn núi.

8

cuộn

Một tuple (W, N, E, S) xác định mức độ lớn của một vùng có thể được cuộn, trong đó w là phía bên trái, n trên cùng, e bên phải và s phía dưới.

9

bề rộng

Kích thước của khung vẽ trong kích thước x.

10

xscrollincrement

Nếu bạn đặt tùy chọn này thành một kích thước dương, khung vẽ chỉ có thể được định vị trên bội số của khoảng cách đó và giá trị sẽ được sử dụng để cuộn bằng cách cuộn các đơn vị, chẳng hạn như khi người dùng nhấp vào mũi tên ở hai đầu của thanh cuộn.

11

XScrollCommand

Nếu canvas có thể cuộn, thuộc tính này phải là phương thức .set () của thanh cuộn ngang.

12

yscrollincrement

Hoạt động như XScrollincrement, nhưng chi phối chuyển động dọc.

13

YscrollCommand

Nếu canvas có thể cuộn, thuộc tính này phải là phương thức .set () của thanh cuộn dọc.

Tiện ích Canvas có thể hỗ trợ các mục tiêu chuẩn sau -

ARC - tạo ra một mục hồ quang, có thể là hợp âm, pieslice hoặc một vòng cung đơn giản. − Creates an arc item, which can be a chord, a pieslice or a simple arc.

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")

Hình ảnh - Tạo một mục hình ảnh, có thể là một thể hiện của các lớp bitmapimage hoặc các lớp ảnh. − Creates an image item, which can be an instance of either the BitmapImage or the PhotoImage classes.

filename = PhotoImage(file = "sunshine.gif")
image = canvas.create_image(50, 50, anchor=NE, image=filename)

Dòng - Tạo một mục dòng. − Creates a line item.

line = canvas.create_line(x0, y0, x1, y1, ..., xn, yn, options)

Bầu dục - tạo ra một vòng tròn hoặc hình elip ở tọa độ đã cho. Phải mất hai cặp tọa độ; Các góc trên và dưới bên phải của hình chữ nhật giới hạn cho hình bầu dục. − Creates a circle or an ellipse at the given coordinates. It takes two pairs of coordinates; the top left and bottom right corners of the bounding rectangle for the oval.

oval = canvas.create_oval(x0, y0, x1, y1, options)

Polygon - Tạo một vật phẩm đa giác phải có ít nhất ba đỉnh. − Creates a polygon item that must have at least three vertices.

oval = canvas.create_polygon(x0, y0, x1, y1,...xn, yn, options)

Thí dụ

Tự mình thử ví dụ sau -

import Tkinter

top = Tkinter.Tk()

C = Tkinter.Canvas(top, bg="blue", height=250, width=300)

coord = 10, 50, 240, 210
arc = C.create_arc(coord, start=0, extent=150, fill="red")

C.pack()
top.mainloop()

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

python_gui_programming.htm

Bởi Bernd Klein. Sửa đổi lần cuối: 01 tháng 2 năm 2022.Bernd Klein. Last modified: 01 Feb 2022.

Trên trang này

Giới thiệu

Các tiện ích Canvas cung cấp các cơ sở đồ họa cho Tkinter. Trong số các đối tượng đồ họa này là các đường, vòng tròn, hình ảnh và thậm chí các vật dụng khác. Với tiện ích này, có thể vẽ đồ thị và sơ đồ, tạo các trình soạn thảo đồ họa và triển khai các loại tiện ích tùy chỉnh khác nhau.

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Chúng tôi chứng minh trong ví dụ đầu tiên của chúng tôi, làm thế nào để vẽ một dòng.

Phương thức created_line (phối hợp, tùy chọn) được sử dụng để vẽ một đường thẳng. Các "tọa độ" tọa độ được đưa ra dưới dạng bốn số nguyên: x1, y1, x2, y2 Điều này có nghĩa là dòng đi từ điểm (x1, y1) đến điểm (x2, y2). Sau khi các tọa độ này theo một danh sách phân tách dấu phẩy các tham số bổ sung, có thể trống. Ví dụ, chúng tôi đặt màu sắc của dòng màu xanh lá cây đặc biệt của trang web của chúng tôi: fill = "#476042"

Chúng tôi giữ ví dụ đầu tiên có chủ ý rất đơn giản. Chúng tôi tạo ra một khung vẽ và vẽ một đường ngang thẳng vào khung vẽ này. Dòng này theo chiều dọc cắt vải thành hai khu vực.

Việc đúc vào giá trị số nguyên trong gán "y = int (canvas_height / 2)" là thừa, bởi vì created_line cũng có thể hoạt động với các giá trị float. Chúng được tự động biến thành các giá trị số nguyên. Trong phần sau, bạn có thể thấy mã của tập lệnh đơn giản đầu tiên của chúng tôi:

from tkinter import *
master = Tk()

canvas_width = 80
canvas_height = 40
w = Canvas(master, 
           width=canvas_width,
           height=canvas_height)
w.pack()

y = int(canvas_height / 2)
w.create_line(0, y, canvas_width, y, fill="#476042")


mainloop()

Nếu chúng ta bắt đầu chương trình này, sử dụng Python 3, chúng ta sẽ nhận được cửa sổ sau:

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Để tạo hình chữ nhật, chúng tôi có phương thức created_rectangle (phối hợp, tùy chọn). Các phối hợp một lần nữa được xác định bởi hai điểm, nhưng lần này điểm đầu tiên là điểm trên cùng bên trái và điểm dưới cùng của hình chữ nhật.

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Cửa sổ, bạn thấy ở trên, được tạo bởi mã Python Tkinter sau:

from tkinter import *

master = Tk()

w = Canvas(master, width=200, height=100)
w.pack()

w.create_rectangle(50, 20, 150, 80, fill="#476042")
w.create_rectangle(65, 35, 135, 65, fill="yellow")
w.create_line(0, 0, 50, 20, fill="#476042", width=3)
w.create_line(0, 100, 50, 80, fill="#476042", width=3)
w.create_line(150,20, 200, 0, fill="#476042", width=3)
w.create_line(150, 80, 200, 100, fill="#476042", width=3)

mainloop()

Hình ảnh sau với tọa độ sẽ đơn giản hóa sự hiểu biết về ứng dụng của created_lines và create_rectangle trong ví dụ trước của chúng tôi.

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Văn bản trên vải

Bây giờ chúng tôi chứng minh làm thế nào để in văn bản trên một tấm bạt. Chúng tôi sẽ mở rộng và sửa đổi ví dụ trước cho mục đích này. Phương thức created_text () có thể được áp dụng cho một đối tượng canvas để viết văn bản trên đó. Hai tham số đầu tiên là vị trí X và Y của đối tượng văn bản. Theo mặc định, văn bản được tập trung vào vị trí này. Bạn có thể ghi đè này với tùy chọn neo. Ví dụ: nếu tọa độ phải là góc trên bên trái, hãy đặt mỏ neo thành Tây Bắc. Với văn bản tham số từ khóa, chúng ta có thể xác định văn bản thực tế sẽ được hiển thị trên khung vẽ.

from tkinter import *

canvas_width = 200
canvas_height = 100

colours = ("#476042", "yellow")
box=[]

for ratio in ( 0.2, 0.35 ):
   box.append( (canvas_width * ratio,
                canvas_height * ratio,
                canvas_width * (1 - ratio),
                canvas_height * (1 - ratio) ) )

master = Tk()

w = Canvas(master, 
           width=canvas_width, 
           height=canvas_height)
w.pack()

for i in range(2):
   w.create_rectangle(box[i][0], box[i][1],box[i][2],box[i][3], fill=colours[i])

w.create_line(0, 0,                 # origin of canvas
              box[0][0], box[0][1], # coordinates of left upper corner of the box[0]
              fill=colours[0], 
              width=3)
w.create_line(0, canvas_height,     # lower left corner of canvas
              box[0][0], box[0][3], # lower left corner of box[0]
              fill=colours[0], 
              width=3)
w.create_line(box[0][2],box[0][1],  # right upper corner of box[0] 
              canvas_width, 0,      # right upper corner of canvas
              fill=colours[0], 
              width=3)
w.create_line(box[0][2], box[0][3], # lower right corner pf box[0]
              canvas_width, canvas_height, # lower right corner of canvas
              fill=colours[0], width=3)

w.create_text(canvas_width / 2,
              canvas_height / 2,
              text="Python")
mainloop()

Mặc dù mã của chương trình ví dụ của chúng tôi bị thay đổi mạnh mẽ, kết quả đồ họa trông vẫn giống nhau ngoại trừ văn bản "Python":

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Bạn có thể hiểu được lợi ích của các thay đổi mã của chúng tôi, nếu bạn thay đổi ví dụ chiều cao của Canvas thành 190 và chiều rộng thành 90 và sửa đổi tỷ lệ cho hộp đầu tiên thành 0,3. Hình ảnh làm điều này trong mã của ví dụ đầu tiên của chúng tôi. Nó sẽ khó khăn hơn rất nhiều. Kết quả trông như thế này:

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Đối tượng hình bầu dục

Một hình bầu dục (hoặc một hình trứng) là bất kỳ đường cong nào giống như một quả trứng (ovum có nghĩa là trứng trong tiếng Latin). Nó giống như một hình elip, nhưng nó không phải là một hình elip. Thuật ngữ "hình bầu dục" không được xác định rõ. Nhiều đường cong khác nhau được gọi là hình bầu dục, nhưng tất cả chúng đều có điểm chung:

  • Chúng có thể khác biệt, đơn giản (không tự giao nhau), lồi, đóng, đường cong máy bay
  • Chúng có hình dạng rất giống với hình elip
  • Có ít nhất một trục đối xứng

Từ hình bầu dục bắt nguồn từ Ovum Latin có nghĩa là "trứng" và đó là những gì nó là: một con số giống với hình thức của một quả trứng. Một hình bầu dục được xây dựng từ hai cặp cung, với hai bán kính khác nhau, một vòng tròn là một trường hợp đặc biệt của hình bầu dục.

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Chúng ta có thể tạo một hình bầu dục trên Canvas C với phương pháp sau:

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
0

Phương pháp này trả về ID đối tượng của đối tượng hình bầu dục mới trên Canvas C.

Kịch bản sau đây vẽ một vòng tròn xung quanh điểm (75,75) với bán kính 25:

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
1

Chúng ta có thể xác định một vòng tròn bản vẽ hàm nhỏ bằng cách sử dụng phương thức create_oval ().

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
2

Vẽ tương tác vào một tấm bạt

Chúng tôi muốn viết một ứng dụng để vẽ hoặc viết vào một bức tranh. Thật không may, không có cách nào để vẽ chỉ một chấm vào một tấm bạt. Nhưng chúng ta có thể khắc phục vấn đề này bằng cách sử dụng một hình bầu dục nhỏ:

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
3

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Vẽ đa giác

Nếu bạn muốn vẽ một đa giác, bạn phải cung cấp ít nhất ba điểm tọa độ: create_polygon (x0, y0, x1, y1, x2, y2, ...)
create_polygon(x0,y0, x1,y1, x2,y2, ...)

Trong ví dụ sau, chúng tôi vẽ một hình tam giác bằng phương pháp này:

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
4

Có vẻ như thế này:

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Khi bạn đọc nó, có thể sớm có Giáng sinh, nhưng chúng tôi trình bày một cách để cải thiện Giáng sinh tiếp theo của bạn với một số ngôi sao, được tạo ra bởi Python và Tkinter. Ngôi sao đầu tiên thẳng thắn với hầu như không có bất kỳ kỹ năng lập trình nào liên quan:

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
5

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Như chúng tôi đã đề cập, cách tiếp cận này là rất không khéo léo. Điều gì sẽ xảy ra nếu chúng ta phải thay đổi kích thước hoặc độ dày của ngôi sao? Chúng ta phải thay đổi tất cả các điểm theo cách thủ công, tất nhiên là một nhiệm vụ dễ bị lỗi và tẻ nhạt phải làm. Vì vậy, chúng tôi trình bày một phiên bản mới của tập lệnh trước đó liên quan đến nhiều "lập trình" và kỹ năng lập trình hơn. Đầu tiên, chúng tôi đặt sự sáng tạo của ngôi sao vào một chức năng và chúng tôi sử dụng điểm gốc và hai độ dài P và T để tạo ngôi sao:

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Chương trình cải tiến mới của chúng tôi trông giống như thế này:

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
6

Kết quả trông thậm chí còn giống Xmas hơn và chúng tôi chắc chắn rằng không ai nghi ngờ rằng sẽ là địa ngục để xác định trực tiếp các điểm đa giác, như chúng tôi đã làm trong ví dụ ngôi sao đầu tiên của chúng tôi:

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Bitmap

Phương thức created_bitmap () có thể được sử dụng để bao gồm một bitmap trên vải. Các bitmap sau đây có sẵn trên tất cả các nền tảng: "Lỗi", "Gray75", "Gray50", "Gray25", "Gray12", "Hourglass", "Info", "Questhead", "Câu hỏi", "Cảnh báo"
"error", "gray75", "gray50", "gray25", "gray12", "hourglass", "info", "questhead", "question", "warning"

Kịch bản sau đây đặt tất cả các bitmap này trên một tấm bạt:

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
7

Kết quả trông như thế này:

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Mục hình ảnh Canvas

Phương thức Canvas create_image (x0, y0, tùy chọn ...) được sử dụng để vẽ một hình ảnh trên khung vẽ. created_image không chấp nhận hình ảnh trực tiếp. Nó sử dụng một đối tượng được tạo bởi phương thức PhotoImage (). Lớp PhotoImage chỉ có thể đọc hình ảnh GIF và PGM/PPM từ các tệp

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
8

Cửa sổ được tạo bởi tập lệnh Python trước đó trông như thế này:

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Tập thể dục

Viết một chức năng, vẽ một mẫu rô vào một tấm bạt. Chức năng được gọi với rô (canvas, line_distance). "Canvas" là đối tượng Canvas, sẽ được rút vào. line_distance là khoảng cách giữa các đường thẳng đứng và ngang.

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Dung dịch

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")
9

Kết quả của tập lệnh trước trông như thế này:

Hướng dẫn how do you create a canvas in python? - làm thế nào để bạn tạo một canvas trong python?

Canvas là gì và làm thế nào nó được tạo ra trong Python?

Canvas là một khu vực hình chữ nhật nhằm vẽ hình ảnh hoặc các bố cục phức tạp khác.Bạn có thể đặt đồ họa, văn bản, widget hoặc khung trên vải.a rectangular area intended for drawing pictures or other complex layouts. You can place graphics, text, widgets or frames on a Canvas.

Làm thế nào để canvas hoạt động python?

Canvas là một tiện ích có mục đích chung: bạn có thể sử dụng nó để tạo ra bất kỳ loại đồ họa nào bao gồm cốt truyện, bản vẽ, biểu đồ, hiển thị hình ảnh và nhiều hơn nữa.Điều này xác định nơi để thêm nó, nền và kích thước.Sau khi sáng tạo, bạn có thể vẽ trên đầu nó.you can use it to make any kind of graphics including plots, drawings, charts, show images and much more. This defines where to add it, the background and size. After creation, you can draw on top of it.

Python có thể tạo GUI không?

Tạo giao diện người dùng đồ họa đơn giản (GUI) hoạt động trên nhiều nền tảng có thể phức tạp.Nhưng nó không phải là như vậy.Bạn có thể sử dụng gói Python và PysimpleGui để tạo giao diện người dùng đẹp mắt mà bạn và người dùng của bạn sẽ thích!You can use Python and the PySimpleGUI package to create nice-looking user interfaces that you and your users will enjoy!

Canvas pack () làm gì?

Gói () tổ chức các widget trong các hộp ngang và dọc được giới hạn ở các vị trí bên trái, phải, trên, dưới cùng và liên quan đến nhau trong một khung.organizes widgets in horizontal and vertical boxes that are limited to left, right, top, bottom positions offset and relative to each other within a frame.