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ổ sauTấ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[]
2Bạ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épfrom 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épfrom 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[]
3Ví 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
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
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
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 widgetPhươ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ọicú 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[]
1Ví 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ã sauThí dụ. thậm chí ràng buộc
Sao chépfrom 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[]
4from 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[]
8Trong 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