Cách tạo hộp bằng Python

Các ứng dụng máy tính hiện đại thân thiện với người dùng. Tương tác người dùng không bị hạn chế đối với I/O dựa trên bảng điều khiển. Chúng có giao diện người dùng đồ họa (GUI) tiện dụng hơn nhờ bộ xử lý tốc độ cao và phần cứng đồ họa mạnh mẽ. Các ứng dụng này có thể nhận đầu vào thông qua các lần nhấp chuột và có thể cho phép người dùng chọn từ các lựa chọn thay thế với sự trợ giúp của các nút radio, danh sách thả xuống và các thành phần GUI (hoặc tiện ích con) khác.

Các ứng dụng như vậy được phát triển bằng cách sử dụng một trong các thư viện đồ họa khác nhau có sẵn. Thư viện đồ họa là bộ công cụ phần mềm có tập hợp các lớp xác định chức năng của các phần tử GUI khác nhau. Các thư viện đồ họa này thường được viết bằng C/C++. Nhiều trong số chúng đã được chuyển sang Python dưới dạng các mô-đun có thể nhập được. Một số trong số họ được liệt kê dưới đây

Tkinter là cổng Python cho bộ công cụ Tcl-Tk GUI được phát triển bởi Fredrik Lundh. Mô-đun này đi kèm với các bản phân phối tiêu chuẩn của Python cho tất cả các nền tảng

PyQtis, giao diện Python cho Qt, là một khung GUI đa nền tảng rất phổ biến

PyGTK là mô-đun chuyển Python sang một bộ công cụ tiện ích GUI phổ biến khác có tên là GTK

WxPython là một trình bao bọc Python xung quanh WxWidgets, một thư viện đồ họa đa nền tảng khác

Hướng dẫn này giải thích việc sử dụng Tkinter trong việc phát triển các chương trình Python dựa trên GUI

Ứng dụng GUI cơ bản

Các phần tử GUI và chức năng của chúng được xác định trong mô-đun Tkinter. Đoạn mã sau trình bày các bước tạo giao diện người dùng

from tkinter import *
window=Tk()
# add widgets here

window.title('Hello Python')
window.geometry("300x200+10+20")
window.mainloop()

Trước hết, nhập mô-đun TKinter. Sau khi nhập, hãy thiết lập đối tượng ứng dụng bằng cách gọi hàm

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
1. Thao tác này sẽ tạo một cửa sổ cấp cao nhất (gốc) có khung với thanh tiêu đề, hộp điều khiển với các nút thu nhỏ và đóng cũng như khu vực máy khách để chứa các vật dụng khác. Phương thức
from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
2 xác định chiều rộng, chiều cao và tọa độ của góc trên cùng bên trái của khung như bên dưới (tất cả các giá trị tính bằng pixel).
from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
0 Đối tượng ứng dụng sau đó đi vào vòng lặp lắng nghe sự kiện bằng cách gọi phương thức
from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
1. Ứng dụng hiện đang liên tục chờ đợi bất kỳ sự kiện nào được tạo trên các phần tử trong đó. Sự kiện có thể là văn bản được nhập vào trường văn bản, lựa chọn được thực hiện từ menu thả xuống hoặc nút radio, hành động nhấp chuột đơn/đôi, v.v. Chức năng của ứng dụng liên quan đến việc thực thi các chức năng gọi lại thích hợp để đáp ứng với một loại sự kiện cụ thể. Chúng ta sẽ thảo luận về xử lý sự kiện sau trong hướng dẫn này. Vòng lặp sự kiện sẽ kết thúc khi và khi nhấp vào nút đóng trên thanh tiêu đề. Đoạn mã trên sẽ tạo cửa sổ sau

Cách tạo hộp bằng Python
Cửa sổ Python-Tkinter

Tất cả các lớp tiện ích Tkinter được kế thừa từ lớp Widget. Hãy thêm các vật dụng được sử dụng phổ biến nhất

Cái nút

Nút có thể được tạo bằng lớp Nút. Hàm tạo của lớp Nút yêu cầu tham chiếu đến cửa sổ chính và các tùy chọn

Chữ ký.

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
2

Bạn có thể đặt các thuộc tính quan trọng sau để tùy chỉnh một nút

  • chữ. chú thích của nút
  • bg. màu nền
  • fg. màu nền trước
  • nét chữ. tên phông chữ và kích thước
  • hình ảnh. được hiển thị thay vì văn bản
  • yêu cầu. chức năng được gọi khi nhấp vào

Thí dụ. Cái nút

Sao chép

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()

Nhãn mác

Nhãn có thể được tạo trong giao diện người dùng trong Python bằng lớp Nhãn. Trình tạo Nhãn yêu cầu đối tượng cửa sổ cấp cao nhất và các tham số tùy chọn. Các tham số của tùy chọn tương tự như đối tượng Button

Sau đây thêm một nhãn trong cửa sổ

Thí dụ. Nhãn mác

Sao chép

from tkinter import *
window=Tk()
lbl=Label(window, text="This is Label widget", fg='red', font=("Helvetica", 16))
lbl.place(x=60, y=50)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()

Tại đây, chú thích của nhãn sẽ được hiển thị bằng màu đỏ, sử dụng phông chữ Helvetica cỡ 16

Lối vào

Tiện ích này hiển thị hộp văn bản một dòng để chấp nhận đầu vào của người dùng. Để nhập văn bản nhiều dòng, hãy sử dụng tiện ích Văn bản. Ngoài các thuộc tính đã được đề cập, hàm tạo của lớp Entry chấp nhận các thuộc tính sau

  • bd. kích thước đường viền của hộp văn bản;
  • buổi bieu diễn. để chuyển đổi hộp văn bản thành trường mật khẩu, hãy đặt thuộc tính hiển thị thành "*"

Đoạn mã sau thêm trường văn bản

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
3

Ví dụ sau tạo một cửa sổ có nút, nhãn và trường nhập

Thí dụ. Tạo tiện ích

Sao chép

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
lbl=Label(window, text="This is Label widget", fg='red', font=("Helvetica", 16))
lbl.place(x=60, y=50)
txtfld=Entry(window, text="This is Entry Widget", bd=5)
txtfld.place(x=80, y=150)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()

Ví dụ trên sẽ tạo cửa sổ sau

Cách tạo hộp bằng Python
Tạo UI Widget trong Python-Tkinter

Tiện ích lựa chọn

Nút radio. Tiện ích này hiển thị một nút chuyển đổi có trạng thái BẬT/TẮT. Có thể có nhiều hơn một nút, nhưng chỉ một trong số chúng sẽ được BẬT tại một thời điểm nhất định

nút kiểm. Đây cũng là một nút chuyển đổi. Một hộp kiểm hình chữ nhật xuất hiện trước chú thích của nó. Trạng thái BẬT của nó được hiển thị bằng dấu tích trong hộp sẽ biến mất khi được nhấp để TẮT

hộp tổ hợp. Lớp này được định nghĩa trong mô-đun ttk của tkinterpackage. Nó điền dữ liệu thả xuống từ một loại dữ liệu bộ sưu tập, chẳng hạn như bộ hoặc danh sách dưới dạng tham số giá trị

hộp danh sách. Không giống như Combobox, tiện ích này hiển thị toàn bộ bộ sưu tập các mục chuỗi. Người dùng có thể chọn một hoặc nhiều mục

Ví dụ sau minh họa cửa sổ với các tiện ích lựa chọn. Radiobutton, Checkbutton, Listbox và Combobox

Thí dụ. Tiện ích lựa chọn

Sao chép

________số 8

Cách tạo hộp bằng Python
Tạo giao diện người dùng trong Python-Tkinter

Xử lý sự kiện

Một sự kiện là một thông báo mà đối tượng ứng dụng nhận được từ các tiện ích GUI khác nhau do tương tác của người dùng. Đối tượng Ứng dụng luôn dự đoán các sự kiện khi nó chạy một vòng lặp lắng nghe sự kiện. Các hành động của người dùng bao gồm nhấp chuột hoặc nhấp đúp chuột, nhấn phím bàn phím trong khi điều khiển nằm trong hộp văn bản, một số yếu tố tăng hoặc mất tiêu điểm, v.v.

Events are expressed as strings in format.

Nhiều sự kiện được thể hiện giống như vòng loại. Loại xác định lớp của sự kiện

Bảng sau đây cho thấy cách Tkinter nhận ra các sự kiện khác nhau

EventModifierTypeQualifierActionButton1Left mouse button click.Button2Middle mouse button click.DestroyWindow is being destroyed.DoubleButton1Double-click first mouse button 1.EnterCursor enters window.ExposeWindow fully or partially exposed.KeyPressaAny key has been pressed.KeyReleaseAny key has been released.LeaveCursor leaves window.PrintPRINT key has been pressed.FocusInWidget gains focus.FocusOutwidget loses focus.

Một sự kiện phải được đăng ký với một hoặc nhiều tiện ích GUI trong ứng dụng. Nếu không, nó sẽ bị bỏ qua. Trong Tkinter, có hai cách để đăng ký sự kiện bằng widget. Cách đầu tiên là sử dụng phương thức

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
4 và cách thứ hai là sử dụng tham số lệnh trong hàm tạo widget

Phương thức ràng buộc ()

Phương thức

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
4 liên kết một sự kiện với một hàm gọi lại để khi sự kiện đó xảy ra, hàm đó được gọi

cú pháp

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
1

Ví dụ: để gọi hàm

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
6 khi nhấp vào nút bên trái, hãy sử dụng đoạn mã sau

Thí dụ. thậm chí ràng buộc

Sao chép

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
3

Đối tượng sự kiện được đặc trưng bởi nhiều thuộc tính như tiện ích nguồn, tọa độ vị trí, số nút chuột và loại sự kiện. Chúng có thể được chuyển đến chức năng gọi lại nếu được yêu cầu

Tham số lệnh

Mỗi tiện ích chủ yếu đáp ứng một loại cụ thể. Ví dụ: Nút là nguồn của sự kiện Nút. Vì vậy, nó được mặc định ràng buộc với nó. Các phương thức khởi tạo của nhiều lớp widget có một tham số tùy chọn được gọi là lệnh. Tham số lệnh này được đặt để gọi lại chức năng sẽ được gọi bất cứ khi nào sự kiện ràng buộc của nó xảy ra. Phương pháp này thuận tiện hơn phương pháp

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
4

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
8

Trong ví dụ dưới đây, cửa sổ ứng dụng có hai trường nhập văn bản và một trường khác để hiển thị kết quả. Có hai đối tượng nút với chú thích Thêm và Trừ. Người dùng phải nhập số vào hai tiện ích Mục nhập. Phép cộng hoặc phép trừ của chúng được hiển thị trong phần ba

Nút đầu tiên (Thêm) được định cấu hình bằng tham số lệnh. Giá trị của nó là phương thức

from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
9 trong lớp. Nút thứ hai sử dụng phương pháp
from tkinter import *
window=Tk()
btn=Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
4 để đăng ký nhấp chuột trái với phương pháp
from tkinter import *
window=Tk()
lbl=Label(window, text="This is Label widget", fg='red', font=("Helvetica", 16))
lbl.place(x=60, y=50)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
1. Cả hai phương thức đều đọc nội dung của các trường văn bản bằng phương thức
from tkinter import *
window=Tk()
lbl=Label(window, text="This is Label widget", fg='red', font=("Helvetica", 16))
lbl.place(x=60, y=50)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
2 của tiện ích Mục nhập, phân tích cú pháp thành số, thực hiện phép cộng/trừ và hiển thị kết quả trong trường văn bản thứ ba bằng phương thức
from tkinter import *
window=Tk()
lbl=Label(window, text="This is Label widget", fg='red', font=("Helvetica", 16))
lbl.place(x=60, y=50)
window.title('Hello Python')
window.geometry("300x200+10+10")
window.mainloop()
3