Hướng dẫn dùng pyqt download python
Mục lục bài viết:
Show
Ngay cả khi các ứng dụng web và di động dường như vượt qua thị trường phát triển phần mềm, vẫn có nhu cầu về các ứng dụng máy tính để bàn Giao diện người dùng đồ họa (GUI) truyền thống . Đối với các nhà phát triển quan tâm đến việc xây dựng các loại ứng dụng này bằng Python, có rất nhiều thư viện để lựa chọn, bao gồm Tkinter , wxPython , PyQt , PySide2 và các thư viện khác. Trong hướng dẫn này, bạn sẽ phát triển các ứng dụng GUI trên máy tính để bàn với Python và PyQt . Bạn sẽ học cách:
Đối với hướng dẫn này, bạn sẽ tạo một ứng dụng máy tính với Python và PyQt. Điều này sẽ giúp bạn nắm bắt các nguyên tắc cơ bản và giúp bạn bắt đầu và sử dụng thư viện. Bạn có thể tải xuống mã nguồn cho dự án và tất cả các ví dụ trong hướng dẫn này bằng cách nhấp vào liên kết bên dưới: Hiểu PyQtPyQt là một liên kết Python cho Qt , là một tập hợp các thư viện C ++ và các công cụ phát triển bao gồm các bản tóm tắt độc lập với nền tảng cho Giao diện người dùng đồ họa (GUI), cũng như mạng, luồng, biểu thức chính quy , cơ sở dữ liệu SQL, SVG, OpenGL, XML và nhiều tính năng mạnh mẽ khác. Được phát triển bởi RiverBank Computing Ltd , PyQt có sẵn trong hai phiên bản:
Mặc dù PyQt4 có thể được xây dựng dựa trên Qt 5.x, chỉ một tập hợp con nhỏ cũng tương thích với Qt 4.x sẽ được hỗ trợ. Điều này có nghĩa là nếu bạn quyết định sử dụng PyQt4, thì có thể bạn sẽ bỏ lỡ một số tính năng và cải tiến mới trong PyQt5. Xem tài liệu PyQt4 để biết thêm thông tin về chủ đề này. Bạn sẽ bao gồm PyQt5 trong hướng dẫn này, vì nó có vẻ là tương lai của thư viện. Từ bây giờ, hãy đảm bảo coi bất kỳ đề cập nào về PyQt là tham chiếu đến PyQt5. Lưu ý: Nếu bạn muốn đi sâu hơn vào sự khác biệt giữa hai phiên bản của thư viện, thì bạn có thể xem trang liên quan trên tài liệu PyQt5 . PyQt5 dựa trên Qt v5 và bao gồm các lớp bao gồm Giao diện người dùng đồ họa cũng như xử lý XML, giao tiếp mạng, biểu thức chính quy, luồng, cơ sở dữ liệu SQL, đa phương tiện, duyệt web và các công nghệ khác có sẵn trong Qt. PyQt5 triển khai hơn một nghìn lớp Qt này trong một tập hợp các mô-đun Python , tất cả đều được chứa trong một gói Python cấp cao nhất được gọi PyQt5 tương thích với Windows, Unix, Linux, macOS, iOS và Android. Đây có thể là một tính năng hấp dẫn nếu bạn đang tìm kiếm một thư viện hoặc khuôn khổ để phát triển các ứng dụng đa nền tảng với giao diện riêng trên mỗi nền tảng. PyQt5 có sẵn dưới hai giấy phép:
Giấy phép PyQt5 của bạn phải tương thích với giấy phép Qt của bạn. Nếu bạn sử dụng phiên bản GPL, thì mã của bạn cũng phải sử dụng giấy phép tương thích với GPL. Nếu bạn muốn sử dụng PyQt5 để tạo các ứng dụng thương mại, thì bạn sẽ cần giấy phép thương mại để cài đặt. Lưu ý: Các Qt Công ty đã phát triển và hiện đang duy trì Python riêng của mình bắt buộc đối với các thư viện Qt. Thư viện Python được gọi là Qt cho Python và được coi là Qt chính thức cho Python. Trong trường hợp này, gói Python được gọi là PySide2. Vì PyQt5 và PySide2 đều được xây dựng dựa trên Qt nên các API của chúng khá giống nhau, thậm chí gần như giống hệt nhau. Đó là lý do tại sao việc chuyển mã PyQt5 sang PySide2 có thể đơn giản như cập nhật một số lần nhập. Nếu bạn học một trong số họ, thì bạn sẽ có thể làm việc với người kia với nỗ lực tối thiểu. Nếu bạn muốn tìm hiểu sâu hơn về sự khác biệt giữa hai thư viện này, thì bạn có thể xem các tài nguyên sau:
Cài đặt PyQtBạn có một số tùy chọn để lựa chọn khi cài đặt PyQt trên hệ thống hoặc môi trường phát triển của mình. Tùy chọn đầu tiên là xây dựng từ nguồn. Điều này có thể hơi phức tạp, vì vậy bạn có thể muốn tránh nó nếu có thể. Nếu bạn thực sự cần xây dựng từ nguồn, thì bạn có thể xem tài liệu của thư viện đề xuất trong những trường hợp đó. Lưu ý: Hầu hết các tùy chọn cài đặt mà bạn sẽ đề cập ở đây đều yêu cầu bạn có một bản cài đặt Python đang hoạt động. Nếu bạn cần tìm hiểu sâu hơn về cách cài đặt Python, hãy xem Cài đặt Python trên Windows, macOS và Linux . Một lựa chọn khác sẽ là sử dụng bánh xe nhị phân . Bánh xe là một cách rất phổ biến để quản lý việc cài đặt các gói Python . Tuy nhiên, bạn cần lưu ý rằng bánh xe cho PyQt5 chỉ khả dụng cho Python 3.5 trở lên. Có bánh xe cho:
Tất cả các bánh xe này đều bao gồm các bản sao của các thư viện Qt tương ứng, vì vậy bạn sẽ không cần phải cài đặt chúng một cách riêng biệt. Tùy chọn thứ ba của bạn là sử dụng trình quản lý gói trên các bản phân phối Linux và macOS. Đối với Windows, bạn có thể sử dụng Cài đặt trên toàn hệ thống với pipNếu bạn đang sử dụng Python 3.5 trở lên, thì bạn có thể cài đặt PyQt5 từ PyPI bằng cách chạy lệnh sau: Với lệnh này, bạn sẽ cài đặt PyQt5 trong hệ thống cơ sở của mình. Bạn có thể bắt đầu sử dụng thư viện ngay sau khi quá trình cài đặt kết thúc. Tùy thuộc vào hệ điều hành của bạn, bạn có thể cần quyền root hoặc quản trị viên để cài đặt này hoạt động. Cài đặt môi trường ảo với pipBạn có thể quyết định không cài đặt PyQt trực tiếp trên hệ thống cơ sở của mình để tránh làm xáo trộn cấu hình của bạn. Trong trường hợp này, bạn có thể sử dụng môi trường ảo Python . Sử dụng các lệnh sau để tạo một và cài đặt PyQt5:
Tại đây, bạn tạo một môi trường ảo với Cài đặt dành riêng cho nền tảngTrong hệ sinh thái Linux, một số bản phân phối bao gồm các gói nhị phân cho PyQt trong kho của chúng. Nếu điều này đúng với bản phân phối của bạn, thì bạn có thể cài đặt thư viện bằng trình quản lý gói của bản phân phối. Ví dụ: trên Ubuntu 18.04, bạn có thể sử dụng lệnh sau:
Với lệnh này, bạn sẽ cài đặt PyQt5 và tất cả các phụ thuộc của nó trong hệ thống cơ sở của bạn, vì vậy bạn có thể sử dụng thư viện trong bất kỳ dự án GUI nào của mình. Lưu ý rằng đặc quyền root là cần thiết mà bạn gọi ở đây Nếu bạn là người dùng Mac, thì bạn có thể cài đặt PyQt5 bằng trình quản lý gói Homebrew . Để làm điều đó, hãy mở một thiết bị đầu cuối và nhập lệnh sau: Nếu mọi việc suôn sẻ, thì bạn sẽ có PyQt5 được cài đặt trên hệ thống cơ sở của mình, sẵn sàng để bạn sử dụng. Lưu ý: Nếu bạn sử dụng trình quản lý gói trên Linux hoặc macOS, thì có khả năng bạn sẽ không nhận được phiên bản mới nhất của PyQt5. Một Nếu bạn thích sử dụng Windows, nhưng bạn quyết định không sử dụng bánh xe nhị phân, thì đường dẫn của bạn thông qua cài đặt PyQt có thể khó khăn. Đó là bởi vì trang tải xuống PyQt5 dường như không còn cung cấp các tệp ( Nếu bạn thực sự cần cài đặt PyQt theo cách này, thì bạn sẽ cần:
Cài đặt AnacondaMột giải pháp thay thế khác mà bạn có thể sử dụng để cài đặt PyQt là Anaconda , một bản phân phối Python cho khoa học dữ liệu. Anaconda là một gói và trình quản lý môi trường đa nền tảng và miễn phí, bao gồm một bộ sưu tập hơn 1.500 gói mã nguồn mở . Anaconda cung cấp một trình hướng dẫn cài đặt thân thiện với người dùng mà bạn có thể sử dụng để cài đặt PyQt trên hệ thống của mình. Bạn có thể tải xuống phiên bản thích hợp cho nền tảng hiện tại của mình và làm theo hướng dẫn trên màn hình. Nếu bạn cài đặt phiên bản mới nhất của Anaconda, thì bạn sẽ có các gói sau:
Với bộ gói này, bạn sẽ có tất cả những gì bạn cần để phát triển các ứng dụng GUI trên máy tính để bàn với Python và PyQt. Lưu ý: Lưu ý rằng cài đặt Anaconda sẽ chiếm một lượng lớn dung lượng ổ đĩa. Nếu bạn cài đặt Anaconda chỉ để sử dụng các gói PyQt, thì bạn sẽ có một lượng lớn các gói và thư viện không sử dụng trên hệ thống của mình. Hãy ghi nhớ điều này khi bạn cân nhắc sử dụng phân phối Anaconda. Tạo ứng dụng PyQt đầu tiên của bạnBây giờ bạn đã cài đặt PyQt hoạt động, bạn đã sẵn sàng để bắt đầu viết mã. Bạn sẽ tạo một "Xin chào, Thế giới!" ứng dụng với Python và PyQt. Dưới đây là các bước bạn sẽ làm theo:
Bạn có thể tải xuống mã nguồn cho các ví dụ mà bạn sẽ trình bày trong phần này tại liên kết bên dưới: Bạn sẽ bắt đầu với một tệp có tên
Đầu tiên, bạn nhập Đối với bước hai, bạn cần tạo một phiên bản
Tại đây, bạn tạo phiên bản của Lưu ý: Bước ba là tạo GUI của ứng dụng. Đối với ví dụ này, GUI của bạn sẽ dựa trên
Trong mã này, Bạn có thể sử dụng Mọi ứng dụng GUI chức năng đều cần các
widget! Tại đây, bạn sử dụng một Lưu ý: Trong PyQt5, bạn có thể sử dụng bất kỳ tiện ích nào
(một lớp con của Mối quan hệ cha mẹ - con cái được sử dụng cho hai mục đích bổ sung:
Mối quan hệ này cũng xác định quyền sở hữu , với việc cha mẹ sở hữu con cái của họ. Mô hình quyền sở hữu PyQt5 đảm bảo rằng nếu bạn xóa Để tránh rò rỉ bộ nhớ, bạn phải luôn đảm bảo rằng bất kỳ Bạn đã thực hiện xong bước ba, vì vậy hãy viết mã hai bước cuối cùng và chuẩn bị cho ứng dụng PyQt GUI đầu tiên của bạn sẵn sàng hoạt động:
Ở đây, bạn gọi Lưu ý: Sự kiện sơn là một yêu cầu sơn các vật dụng tạo GUI. Cuối cùng, bạn bắt đầu vòng lặp sự kiện của ứng dụng bằng cách gọi Khi bạn chạy tập lệnh này , bạn sẽ thấy một cửa sổ như sau: Tại đây, ứng dụng
của bạn sẽ hiển thị một cửa sổ (dựa trên Chúc mừng! Bạn đã tạo ứng dụng máy tính để bàn PyQt GUI đầu tiên của mình! Xem xét các kiểu mãNếu bạn xem kỹ mã cho ứng dụng đầu tiên của mình, thì bạn sẽ nhận thấy rằng PyQt không tuân theo các quy ước đặt tên và kiểu mã PEP 8 . PyQt được xây dựng dựa trên Qt, được viết bằng C ++ và sử dụng kiểu đặt tên camelCase cho các hàm, phương thức và biến. Điều đó nói rằng, bạn sẽ cần quyết định kiểu đặt tên nào bạn sẽ sử dụng cho các ứng dụng PyQt GUI của riêng mình. Về vấn đề này, PEP 8 tuyên bố rằng:
Ngoài ra, Zen of Python nói:
Nếu bạn muốn viết mã nhất quán, thì bạn có thể muốn bỏ qua kiểu đặt tên PEP 8 và gắn bó với kiểu đặt tên PyQt. Đây là một quyết định mà bạn cần phải thực hiện. Trong hướng dẫn này, bạn sẽ làm theo kiểu đặt tên PyQt để có tính nhất quán. Học kiến thức cơ bản về PyQtBạn sẽ cần phải nắm vững các khái niệm cơ bản của logic PyQt để sử dụng hiệu quả thư viện để phát triển các ứng dụng GUI. Một số khái niệm này bao gồm:
Các yếu tố này sẽ là nền tảng xây dựng các ứng dụng PyQt GUI của bạn. Hầu hết chúng được biểu diễn dưới dạng các lớp Python. Vật dụng
Các widget cũng nhận các lần nhấp chuột, nhấn phím và các sự kiện khác từ người dùng, hệ thống cửa sổ và nhiều nguồn khác. Mỗi khi một widget bắt được một sự kiện, nó sẽ phát ra một tín hiệu để thông báo về sự thay đổi trạng thái của nó. PyQt5 có một bộ sưu tập vật dụng hiện đại và phong phú phục vụ một số mục đích. Một số widget phổ biến và hữu ích nhất là:
Chúng ta hãy xem xét kỹ hơn từng vật dụng này. Đầu tiên là nút . Bạn có thể tạo một nút bằng cách khởi tạo Các nút như thế này có lẽ là tiện ích được sử dụng phổ biến nhất trong bất kỳ GUI nào. Khi bạn nhấp vào chúng, bạn có thể ra lệnh cho máy tính thực hiện các hành động. Bạn thậm chí có thể thực hiện các hành động để phản hồi người dùng nhấp vào một nút. Tiếp theo là các nhãn mà bạn có thể tạo Bạn có thể sử dụng các nhãn như thế này để giải thích rõ hơn về mục đích hoặc cách sử dụng GUI của mình. Bạn có thể chỉnh sửa giao diện của chúng theo một số cách và thậm chí chúng có thể chấp nhận văn bản HTML, như bạn đã thấy trước đó. Nhãn cũng có thể được sử dụng để chỉ định khóa ghi nhớ tiêu điểm cho một tiện ích con khác. Một tiện ích phổ biến khác là chỉnh sửa dòng , một hộp văn bản một dòng mà bạn có thể tạo bằng Chỉnh sửa dòng như thế này cung cấp các hoạt động chỉnh sửa cơ bản như Hộp tổ hợp là
một tiện ích hữu ích khác mà bạn có thể tạo bằng Hộp tổ hợp này ở chế độ chỉ đọc , có nghĩa là người dùng có thể chọn một trong số các tùy chọn nhưng không thể thêm tùy chọn của riêng họ. Hộp tổ hợp cũng có thể được chỉnh sửa , cho phép người dùng thêm các tùy chọn mới. Chúng có thể chứa pixmap, chuỗi hoặc cả hai. Tiện ích cuối cùng mà bạn sẽ đề cập ở đây là nút radio , bạn có thể tạo bằng nút
radio Trong nhóm nút radio này, chỉ có thể kiểm tra một nút tại một thời điểm nhất định. Nếu người dùng chọn một nút radio khác, thì nút đã chọn trước đó sẽ tự động tắt. PyQt5 có một bộ sưu tập lớn các vật dụng. Tại thời điểm viết bài này, có hơn bốn mươi sẵn có để bạn sử dụng để tạo GUI cho ứng dụng của mình. Những thứ bạn đã đề cập cho đến nay chỉ là một mẫu nhỏ, nhưng chúng cho bạn thấy sức mạnh và tính linh hoạt của PyQt5. Trong phần tiếp theo, bạn sẽ trình bày cách bố trí các widget khác nhau để tạo các GUI hiện đại và chức năng cho các ứng dụng của bạn. Người quản lý bố cụcBây giờ bạn đã biết widget là gì và cách sử dụng chúng để xây dựng GUI. Nhưng làm thế nào bạn có thể sắp xếp một tập hợp các widget để tạo ra một GUI vừa mạch lạc vừa có chức năng? Có nhiều kỹ thuật mà bạn có thể sử dụng để bố trí các widget trên một biểu mẫu hoặc cửa sổ. Ví dụ: bạn có thể sử dụng
Một giải pháp thay thế là sử dụng Trình quản lý bố cục là các lớp cho phép bạn định kích thước và định vị các widget của mình ở những vị trí bạn muốn chúng có trên biểu mẫu của ứng dụng. Trình quản lý bố cục tự động điều chỉnh để thay đổi kích thước các sự kiện và thay đổi nội dung. Họ cũng kiểm soát kích thước của các vật dụng bên trong chúng. Điều này có nghĩa là các tiện ích con trong một bố cục được tự động thay đổi kích thước bất cứ khi nào biểu mẫu được thay đổi kích thước. Lưu ý: Nếu bạn phát triển các ứng dụng quốc tế, thì bạn có thể đã thấy các nhãn đã dịch có thể được cắt ngắn như thế nào. Điều này đặc biệt có thể xảy ra khi ngôn ngữ đích dài hơn ngôn ngữ gốc. Trình quản lý bố cục có thể giúp bạn tránh được cạm bẫy phổ biến này. Tuy nhiên, tính năng này có thể hơi phức tạp và đôi khi có thể thất bại với những ngôn ngữ đặc biệt nhiều chữ. PyQt cung cấp bốn lớp trình quản lý bố cục cơ bản:
Lớp trình quản lý bố cục đầu tiên là Các widget sẽ xuất hiện bên cạnh cái kia, bắt đầu từ bên trái. Ví dụ mã này cho bạn thấy cách sử dụng
Các dòng được đánh dấu làm nên điều kỳ diệu ở đây:
Khi bạn chạy Trong hình trên, bạn đã thêm ba nút theo chiều ngang. Lưu ý rằng các nút được hiển thị từ trái sang phải theo thứ tự giống như khi bạn thêm chúng vào mã của mình. Lớp trình quản lý bố cục tiếp theo là Mỗi tiện ích con mới sẽ xuất hiện bên dưới tiện ích trước đó. Bạn có thể sử dụng lớp này để xây dựng các đối tượng bố cục hộp dọc và tổ chức tiện ích con của bạn từ trên xuống dưới. Đây là cách bạn có thể tạo và sử dụng một
Trong dòng 15, bạn tạo một phiên bản của Khi bạn chạy ứng dụng này, bạn sẽ nhận được đầu ra như sau: Ứng dụng này hiển thị ba nút theo bố cục dọc, một bên dưới nút kia. Các nút xuất hiện theo thứ tự khi bạn thêm chúng vào mã của mình, từ trên xuống dưới. Lớp trình quản lý bố cục thứ ba là
Đây là cách sử dụng
Trong ví dụ này, bạn tạo một ứng dụng sử dụng một Trong dòng 23, bạn thêm hai đối số nữa vào Nếu bạn chạy mã này từ dòng lệnh của mình, thì bạn sẽ nhận được một cửa sổ như sau: Bạn có thể thấy các tiện ích con của mình được sắp xếp trong một lưới các hàng và cột. Tiện ích con cuối cùng chiếm nhiều ô, như bạn đã chỉ định trong dòng 23. Lớp quản lý bố cục cuối cùng là Cột bên trái bao gồm các nhãn và cột bên phải bao gồm các tiện ích trường. Nếu bạn đang xử lý một ứng dụng cơ sở dữ liệu , thì kiểu bố cục này có thể là một lựa chọn hấp dẫn để tăng năng suất khi bạn tạo biểu mẫu của mình. Ví dụ sau cho bạn thấy cách tạo một ứng dụng sử dụng một
Các dòng từ 15 đến 20 thực hiện công
việc khó khăn trong ví dụ này. Lưu ý rằng Nếu bạn chạy mã này, thì bạn sẽ nhận được kết quả sau: Hình trên cho thấy một GUI sử dụng bố cục biểu mẫu. Cột đầu tiên chứa các nhãn để hỏi người dùng một số thông tin. Cột thứ hai hiển thị các widget cho phép người dùng nhập hoặc chỉnh sửa thông tin bạn yêu cầu từ chúng. Hộp thoại (Dialog)Với PyQt, bạn có thể phát triển hai loại ứng dụng GUI trên máy tính để bàn. Tùy thuộc vào lớp bạn sử dụng để tạo biểu mẫu hoặc cửa sổ chính, bạn sẽ có một trong những điều sau:
Trước tiên, bạn sẽ bắt đầu với các ứng dụng Kiểu hộp thoại. Trong phần tiếp theo, bạn sẽ trình bày các ứng dụng Kiểu Cửa sổ Chính. Để phát triển ứng dụng Kiểu hộp thoại, bạn cần tạo một lớp GUI kế thừa Lưu ý: Cửa sổ hộp thoại cũng thường được sử dụng trong các ứng dụng Kiểu Cửa sổ Chính để giao tiếp và tương tác ngắn với người dùng. Khi các cửa sổ hộp thoại được sử dụng để giao tiếp với người dùng, chúng có thể là:
Cửa sổ hộp thoại cũng có thể cung cấp giá trị trả về và có các nút mặc định (ví dụ: Hộp thoại luôn là một tiện ích con cấp cao nhất. Nếu nó có một Dưới đây là ví dụ về cách bạn sử dụng
Ứng dụng này phức tạp hơn một chút. Đây là những gì đang xảy ra:
Lưu ý: Nếu bạn nhìn vào dòng 26 trong khối mã ở trên, thì bạn sẽ nhận thấy
rằng các trình quản lý bố cục có thể được lồng vào nhau. Bạn có thể lồng các bố cục bằng cách gọi bố cục Khối mã ở trên hiển thị cửa sổ sau: Đây là GUI mà bạn đã tạo bằng cách sử dụng Windows chínhHầu hết thời gian, các ứng dụng GUI của bạn sẽ là Kiểu cửa sổ chính . Điều này có nghĩa là chúng sẽ có thanh menu , một số thanh công cụ, thanh trạng thái và tiện ích trung tâm sẽ là yếu tố chính của GUI. Các ứng dụng của bạn cũng sẽ có một số cửa sổ hộp thoại để thực hiện các tác vụ phụ phụ thuộc vào đầu vào của người dùng. Bạn sẽ sử dụng lớp này
Bạn không thể tạo một cửa sổ
chính mà không đặt tiện ích trung tâm trước. Bạn phải có một tiện ích con trung tâm, ngay cả khi nó chỉ là một trình giữ chỗ. Trong trường hợp này, bạn có thể sử dụng một Ví dụ mã sau đây cho bạn thấy cách sử dụng
Đây là cách mã này hoạt động:
Lưu ý: Khi bạn triển khai các thành phần GUI khác nhau theo phương pháp riêng của chúng, bạn đang làm cho mã của mình dễ đọc hơn và dễ bảo trì hơn. Tuy nhiên, đây không phải là một yêu cầu bắt buộc, vì vậy bạn có thể tự do sắp xếp mã của mình theo cách bạn thích nhất. Khi bạn chạy đoạn mã trên, bạn sẽ thấy một cửa sổ như sau: Bạn có thể thấy rằng ứng dụng Kiểu cửa sổ chính của bạn có các thành phần sau:
Cho đến nay, bạn đã đề cập đến một số thành phần đồ họa quan trọng hơn của bộ widget của PyQt5. Trong hai phần tiếp theo, bạn sẽ trình bày một số khái niệm quan trọng khác liên quan đến các ứng dụng PyQt GUI. Các ứng dụngLớp cơ bản nhất mà bạn sẽ sử dụng khi phát triển các ứng dụng PyQt GUI là
Đây chỉ là một số trách nhiệm cốt lõi của Một trong những trách nhiệm quan trọng nhất Vòng lặp sự kiệnCác ứng dụng GUI là hướng sự kiện . Điều này có nghĩa là các chức năng và phương thức được thực thi theo các thao tác của người dùng như nhấp vào nút, chọn một mục từ hộp tổ hợp, nhập hoặc cập nhật văn bản trong phần chỉnh sửa văn bản, nhấn phím trên bàn phím, v.v. Những hành động của người dùng này thường được gọi là sự kiện . Các sự kiện thường được xử lý bởi một vòng lặp sự kiện (còn được gọi là vòng lặp chính ). Vòng lặp sự kiện là một vòng lặp vô hạn trong đó tất cả các sự kiện từ người dùng, hệ thống cửa sổ và bất kỳ nguồn nào khác đều được xử lý và gửi đi. Vòng lặp sự kiện đợi một sự kiện xảy ra và sau đó điều động nó thực hiện một số tác vụ. Vòng lặp sự kiện tiếp tục hoạt động cho đến khi ứng dụng được kết thúc. Các vòng lặp sự kiện được sử dụng bởi tất cả các ứng dụng GUI. Vòng lặp sự kiện là một loại vòng lặp vô hạn chờ sự xuất hiện của các sự kiện. Nếu một sự kiện xảy ra, thì vòng lặp sẽ kiểm tra xem sự kiện đó có phải là một Trong PyQt, bạn có thể chạy vòng lặp sự kiện của ứng dụng bằng cách gọi Lưu ý: PyQt lần đầu tiên được phát triển để nhắm mục tiêu Python 2, đã có một PyQt5 nhắm mục tiêu
Python 3, không có
Điều này có nghĩa là bạn có thể xóa Đối với một sự kiện để kích hoạt một hành động phản hồi, bạn cần kết nối sự kiện với hành động bạn muốn được thực hiện. Trong PyQt5, bạn có thể thiết lập kết nối đó bằng cách sử dụng cơ chế tín hiệu và khe cắm. Bạn sẽ đề cập đến những điều này trong phần tiếp theo. Tín hiệu và khe cắmCác widget PyQt hoạt động như những người nắm bắt sự kiện . Điều này có nghĩa là mọi tiện ích con đều có thể nắm bắt một số sự kiện cụ thể, chẳng hạn như nhấp chuột, nhấn phím, v.v. Để đáp lại những sự kiện này, các widget luôn phát ra một tín hiệu , đây là một loại thông báo thông báo về sự thay đổi trạng thái của nó. Tín hiệu tự nó không thực hiện bất kỳ hành động nào. Nếu bạn muốn một tín hiệu để kích hoạt một hành động, thì bạn cần kết nối nó với một vị trí . Đây là chức năng hoặc phương thức sẽ thực hiện một hành động bất cứ khi nào tín hiệu kết nối được phát ra. Bạn có thể sử dụng bất kỳ Python nào có thể gọi (hoặc gọi lại ) làm vị trí. Nếu một tín hiệu được kết nối với một khe cắm, thì khe cắm đó được gọi bất cứ khi nào tín hiệu được phát ra. Nếu một tín hiệu không được kết nối với bất kỳ khe cắm nào, thì không có gì xảy ra và tín hiệu bị bỏ qua. Dưới đây là một số tính năng hữu ích nhất của cơ chế này:
Bạn có thể sử dụng cú pháp sau để kết nối tín hiệu với một khe cắm:
Điều này sẽ kết nối Mã này chỉ cho bạn cách sử dụng cơ chế tín hiệu và vị trí:
Trong dòng 13, bạn tạo Khi bạn
nhấp vào Lưu ý: Mỗi tiện ích con đều có tập hợp các tín hiệu được xác định trước của riêng nó. Bạn có thể kiểm tra chúng trên trang tài liệu của tiện ích con. Nếu hàm vị trí của bạn cần nhận thêm các đối số, thì bạn có thể chuyển chúng vào bằng cách sử dụng
Bây giờ,
Để mã này hoạt động, Lưu ý: Bạn cũng có thể sử dụng Cơ chế tín hiệu và khe cắm là những gì bạn sẽ sử dụng để mang lại sức sống cho các ứng dụng PyQt5 GUI của mình. Cơ chế này sẽ cho phép bạn biến các sự kiện của người dùng thành các hành động cụ thể. Bạn có thể tìm hiểu sâu hơn về cơ chế tín hiệu và khe cắm bằng cách xem tài liệu PyQt5 . Bây giờ bạn đã hoàn thành các khái niệm quan trọng nhất của PyQt5. Với kiến thức này và tài liệu của thư viện trong tay, bạn đã sẵn sàng để bắt đầu phát triển các ứng dụng GUI của riêng mình. Trong phần tiếp theo, bạn sẽ xây dựng ứng dụng GUI đầy đủ chức năng đầu tiên của mình. Hãy đi cho nó! Tạo máy tính với Python và PyQtTrong phần này, bạn sẽ phát triển một máy tính bằng cách sử dụng mẫu thiết kế Model-View-Controller (MVC) . Mẫu này có ba lớp mã, mỗi lớp có các vai trò khác nhau:
Đây là mẫu MVC từng bước cho ứng dụng GUI trên máy tính để bàn:
Bạn sẽ sử dụng mẫu thiết kế MVC này để xây dựng máy tính của mình. Tạo bộ xươngBạn sẽ bắt đầu bằng cách triển khai một khung cơ bản cho ứng dụng của mình, được gọi là Nếu bạn muốn tự mình viết mã dự án, hãy tiếp tục và tạo
Tập lệnh này thực hiện tất cả mã bạn cần để chạy một ứng dụng GUI cơ bản. Bạn sẽ sử dụng bộ xương này để xây dựng máy tính của mình. Đây là cách nó hoạt động:
Khi bạn chạy tập lệnh, cửa sổ sau sẽ xuất hiện trên màn hình của bạn: Đây là khung ứng dụng GUI của bạn. Hoàn thành Chế độ xemGUI mà bạn có tại thời điểm này không thực sự giống như một máy tính. Hãy hoàn thành GUI bằng cách thêm màn hình và các nút cho các con số. Bạn cũng sẽ thêm các nút cho các phép toán cơ bản và để xóa màn hình. Trước tiên, bạn sẽ cần thêm các lần nhập sau vào đầu tệp của mình:
Bạn sẽ sử dụng a Bây giờ bạn có thể cập nhật trình khởi tạo cho
Tại đây, bạn đã thêm các dòng mã được đánh dấu. Bạn sẽ sử dụng một Các lệnh gọi đến
Để tạo tiện ích
hiển thị, bạn sử dụng một
Dòng cuối cùng thêm màn hình vào bố cục chung của máy tính với Tiếp theo, bạn sẽ triển khai
Trước tiên, bạn tạo một từ điển trống Lưu ý: Khi nói đến kích thước tiện ích, bạn sẽ hiếm khi tìm thấy các đơn vị đo lường trong tài liệu PyQt. Giả định rằng đơn vị đo lường là pixel (ngoại trừ Giờ đây, GUI (hoặc chế độ xem) của máy tính có thể hiển thị màn hình và các nút. Nhưng vẫn không có cách nào để cập nhật thông tin hiển thị trên màn hình. Bạn có thể khắc phục điều này bằng cách thêm một số phương pháp bổ sung:
Các phương thức này sẽ tạo thành giao diện công khai GUI và hoàn thành lớp chế độ xem cho máy tính Python của bạn. Đây là cách triển khai khả thi:
Đây là những gì mỗi chức năng làm:
Bây giờ GUI của máy tính của bạn đã sẵn sàng! Khi chạy ứng dụng, bạn sẽ thấy một cửa sổ như sau: Bạn đã hoàn thành giao diện GUI của máy tính. Tuy nhiên, nếu bạn cố gắng thực hiện một số phép tính, thì bạn sẽ nhận thấy rằng máy tính vẫn chưa thực hiện được bất kỳ điều gì. Đó là bởi vì bạn chưa triển khai mô hình hoặc bộ điều khiển. Tiếp theo, bạn sẽ thêm một lớp bộ điều khiển cơ bản để bắt đầu mang lại sức sống cho máy tính của mình. Tạo bộ điều khiển cơ bảnTrong phần này, bạn sẽ viết mã lớp bộ điều khiển của máy tính. Lớp này sẽ kết nối khung nhìn với mô hình. Bạn sẽ sử dụng lớp bộ điều khiển để làm cho máy tính thực hiện các hành động theo các sự kiện của người dùng. Bạn sẽ bắt đầu với việc nhập sau:
Ở đầu Lớp bộ điều khiển của bạn cần thực hiện ba tác vụ chính:
Điều này sẽ đảm bảo rằng máy tính của bạn đang hoạt động chính xác. Đây là cách bạn viết mã lớp bộ điều khiển:
Điều đầu tiên bạn làm là đưa ra Cuối cùng, bạn sử dụng Để lớp bộ điều khiển mới này hoạt động, bạn cần cập nhật
Đoạn mã này tạo một phiên bản của Nếu bạn chạy ứng dụng, thì bạn sẽ thấy một cái gì đó như sau: Như bạn có thể thấy, máy tính đã có một số chức năng hữu ích! Bây giờ, bạn có thể xây dựng các biểu thức toán học bằng cách nhấp vào các nút. Lưu ý rằng dấu bằng ( Thực hiện mô hìnhMô hình là lớp mã quản lý logic nghiệp vụ. Trong trường hợp này, logic kinh doanh là tất cả về các phép tính toán học cơ bản. Mô hình của bạn sẽ đánh giá các biểu thức toán học do người dùng của bạn giới thiệu. Vì mô hình cần xử lý lỗi, bạn sẽ xác định hằng số chung sau: Đây là thông báo mà người dùng sẽ thấy nếu họ đưa ra một biểu thức toán học không hợp lệ. Mô hình của bạn sẽ là một chức năng duy nhất:
Ở đây, bạn sử dụng
Bạn có thể tự do làm lại chức năng để làm cho nó trở nên đáng tin cậy và an toàn hơn. Đối với hướng dẫn này, bạn sẽ sử dụng chức năng như hiện tại. Hoàn thiện bộ điều khiểnKhi bạn đã
hoàn thành mô hình của máy tính, bạn có thể hoàn thành bộ điều khiển. Phiên bản cuối cùng của
Các dòng mã mới được đánh dấu. Đầu tiên, bạn thêm một tham số mới vào hàm init. Bây giờ lớp nhận được các cá thể từ cả mô hình và khung nhìn. Sau đó Bạn cũng thêm một Để tất cả mã này hoạt động, bạn cần cập nhật
Ở đây, của bạn Chạy Máy tínhBây giờ bạn đã hoàn thành mã, đã đến lúc kiểm tra! Nếu bạn chạy ứng dụng, thì bạn sẽ thấy một cái gì đó như thế này: Để sử dụng PyCalc, hãy nhập một biểu thức toán học hợp lệ bằng chuột của bạn. Sau đó, nhấn Enterhoặc nhấp vào dấu bằng ( Chúc mừng! Bạn đã phát triển ứng dụng máy tính để bàn GUI đầy đủ chức năng đầu tiên của mình với Python và PyQt! Công cụ bổ sungPyQt5 cung cấp một bộ công cụ bổ sung khá hữu ích để giúp bạn xây dựng các ứng dụng GUI vững chắc, hiện đại và đầy đủ tính năng. Dưới đây là một số công cụ đáng chú ý nhất mà bạn có thể sử dụng:
Qt Designer là công cụ Qt để thiết kế và xây dựng giao diện người dùng đồ họa. Bạn có thể sử dụng nó để thiết kế widget, hộp thoại hoặc hoàn thành các cửa sổ chính bằng cách sử dụng các biểu mẫu trên màn hình và cơ chế kéo và thả. Hình sau cho thấy một số tính năng của Nhà thiết kế Qt: Qt Designer sử dụng các PyQt5 cũng cung cấp một bộ công cụ toàn diện để quốc tế hóa các ứng dụng sang ngôn ngữ địa phương. Cuối cùng, bạn có thể sử dụng hệ thống tài nguyên PyQt5 , đây là một cơ sở để nhúng các tài nguyên
như biểu tượng và tệp dịch. Để sử dụng công cụ này, bạn cần tạo một Phần kết luậnCác ứng dụng máy tính để bàn Giao diện người dùng đồ họa (GUI) vẫn chiếm thị phần đáng kể trên thị trường phát triển phần mềm. Python cung cấp một số khung và thư viện có thể giúp bạn phát triển các ứng dụng GUI hiện đại và mạnh mẽ. Trong hướng dẫn này, bạn đã học cách sử dụng PyQt , được cho là một trong những thư viện phổ biến và vững chắc nhất để phát triển ứng dụng GUI trên máy tính để bàn bằng Python. Bây giờ bạn đã biết cách sử dụng hiệu quả cả Python và PyQt để xây dựng các ứng dụng máy tính để bàn GUI hiện đại. Bây giờ bạn có thể:
Giờ đây, bạn có thể sử dụng Python và PyQt để mang lại sức sống cho các ứng dụng GUI trên máy tính để bàn của mình! Bạn có thể lấy mã nguồn cho dự án máy tính và tất cả các ví dụ mã tại liên kết bên dưới: Đọc thêmNếu bạn muốn tìm hiểu sâu hơn về PyQt và các công cụ liên quan của nó, thì bạn có thể xem qua một số tài nguyên sau:
Mặc dù Tài liệu PyQt5 là tài nguyên đầu tiên được liệt kê ở đây, một số phần quan trọng vẫn còn thiếu hoặc chưa hoàn thiện. May mắn thay, bạn có thể sử dụng Tài liệu PyQt4 để điền vào chỗ trống. Các lớp tham khảo đặc biệt hữu ích để đạt được một sự hiểu biết đầy đủ về các widget và các lớp học. Nếu bạn đang sử dụng tài liệu PyQt4 làm tài liệu tham khảo cho các lớp PyQt5, thì hãy nhớ rằng các lớp sẽ hơi khác nhau và cũng có thể hoạt động khác nhau. Một tùy chọn khác là sử dụng Tài liệu Qt v5 gốc và Tài liệu Tham khảo Lớp của nó để thay thế. Trong trường hợp này, bạn có thể cần một số kiến thức nền tảng về C ++ để hiểu đúng các mẫu mã. Copied !!! |