Hướng dẫn này tập trung vào việc dạy cách sử dụng QT framework sử dụng Python làm ngôn ngữ lập trình, đối với điều này chúng ta có thể sử dụng cả PySide và PyQt, nhưng trong hướng dẫn này chúng ta sẽ sử dụng PySide vì tác giả của hướng dẫn này thích giấy phép LGPL PySide hơn. hơn GPL hoặc PyQt Commercial.
Đầu tiên ... Python là gì?
Theo Wikipedia:
"Python là một ngôn ngữ lập trình thông dịch ở cấp độ rất cao mà triết lý của nó nhấn mạnh đến cú pháp rất rõ ràng và có lợi cho mã có thể đọc được."
Python là một ngôn ngữ lập trình multipadradigm, vì vậy nó hỗ trợ các mô hình lập trình python khác nhau, chẳng hạn như nó hỗ trợ: Lập trình hướng đối tượng (OOP), Lập trình mệnh lệnh (có cấu trúc) và ở mức độ thấp hơn là lập trình chức năng.
Chỉ thế thôi?
Không, nó cũng là một ngôn ngữ gõ động, có nghĩa là python cho phép chúng ta gán các loại giá trị khác nhau cho cùng một biến trong quá trình thực thi chương trình, một số coi đó là một lợi thế, một số khác lại là một nhược điểm, hãy tự xem .
Ngoài những gì đã được đề cập, Python cho phép chúng tôi (giống như nhiều người khác), lập trình cả trong môi trường web và máy tính để bàn web, nó cũng đa nền tảng, hiện tại nó hỗ trợ Gnu / Linux, Windows, Mac osx, Android (Nếu bạn cần đề cập đến chúng để sửa đổi).
QT là gì?
QT là một khung đa dạng, ban đầu được phát triển bởi Nokia, sau đó được bán cho Digia, được sử dụng để phát triển ứng dụng, nó được viết bằng C ++, nhưng có thể được sử dụng bằng các ngôn ngữ khác thông qua Bindings (trong trường hợp của chúng tôi là PySide hoặc PyQt)
Sự khác biệt giữa PySide và PyQt
Chủ yếu
- Giấy phép, PySide được cấp phép theo các điều khoản của LGPL và PyQT theo các điều khoản của GPL hoặc theo giấy phép thương mại, vì vậy chúng tôi sẽ cần trả phí trong trường hợp tạo ứng dụng đã đóng.
- PySide được tạo ra bởi Nokia và PyQt bởi RiverBank.
- PySide giúp chúng ta không gặp rắc rối khi sử dụng STR mỗi khi chúng ta sử dụng Chuỗi Q của mỗi đối tượng QT.
Chúng tôi có thể nêu chi tiết các thay đổi hoàn chỉnh Trên đây.
Chuẩn bị:
Chúng tôi cài đặt Qt:
Nếu chúng tôi có một bản phân phối với Kde, chúng tôi nên có những thứ chúng tôi cần, nếu không:
sudo apt-get cài đặt qt4-dev-tools
Chúng tôi cài đặt PySide:
sudo apt-get install pyside pyside-tools
Ứng dụng Python + QT đầu tiên của chúng tôi
Chúng tôi đi đến trình soạn thảo văn bản yêu thích của mình, tôi khuyên bạn nên cài đặt sublime-text2, nhưng bạn có thể sử dụng trình chỉnh sửa bạn thích và chúng tôi nhập mã sau và lưu nó với tên mà chúng tôi muốn luôn kết thúc bằng phần mở rộng ".py" , Tôi sẽ lưu dưới dạng app1.py:
Chúng tôi chạy nó từ bảng điều khiển như sau:
python app1.py
Cửa sổ này sẽ xuất hiện
Cái gì? Chỉ Cái đó, bởi vì nếu trước đây bạn chỉ có một chiếc máy console, thì bạn còn phàn nàn về điều gì? Bạn đã mong đợi điều gì, một Erp? cố lên người đàn ông cho một cái gì đó bắt đầu.
Bây giờ hãy giải thích mã:
from PySide.QtGui import *
from sys import exit, argv
Ở đây chúng tôi nhập các mô-đun cần thiết để thực thi PySide.
app = QApplication(argv)
Chúng tôi tạo phiên bản Qapplication với ứng dụng tên.
window = Qwidget()
Chúng tôi tạo thể hiện của QWidget ().
window.setWindowTitle("Primera App PySide")
Chúng tôi thực thi phương thức setWindowTitle, phương thức này nhận một Chuỗi làm tham số để "đặt" tiêu đề cho Qwidget của chúng tôi.
window.show()
Chúng tôi hiển thị cửa sổ của chúng tôi
exit(app.exec_())
cuối cùng chúng ta thực hiện chu kỳ thực thi vô hạn của QApplication () của chúng ta.
Cảm ơn
Cảm ơn bạn cho những người đã theo dõi tôi ở đây và có ích. Đối với hướng dẫn tiếp theo, tôi sẽ giải thích cách thiết kế cửa sổ của chúng tôi với QT Designer và nhập chúng vào các dự án của chúng tôi.
Ngoài ra, tôi thêm liên kết đến diễn đàn desde linux nơi tôi có một chủ đề nhỏ với một thư viện nhỏ gồm các hướng dẫn và hướng dẫn về python, chứa các thuật ngữ khác nhau bao gồm:
Hướng dẫn Python cơ bản
wxPython
PyQt và PySide
Django
web2py
Lập trình khoa học trong python.
Và nhiều thứ khác nữa.
Tôi hy vọng họ phục vụ bạn, tôi nói lời tạm biệt, như mọi khi là một niềm vui được thuộc về cộng đồng tuyệt vời này.
Cảm ơn vì bài đăng!
2 điều:
1. Qt ban đầu không phải do Nokia phát triển, mà bởi Trolltech, sau này được Nokia mua lại. Sau đó, công ty này đã bán Qt cho Digia.
2. Hình ảnh trong ví dụ ứng dụng đầu tiên không khớp với mã.
Cảm ơn vì hướng dẫn, tôi sẽ làm theo nó 🙂
Bạn hoàn toàn đúng, tôi đã bỏ lỡ nó. Và điều thứ hai bạn cũng đúng, đó là tôi đã thay đổi nó để dễ dàng hơn và không sử dụng class và tôi đã bỏ sót sửa đổi, lỗi dành cho người mới bắt đầu. Tôi đã chuyển các chỉnh sửa cho một số biên tập viên phê duyệt chúng.
Tôi không thể sửa đổi, tôi để nó cho một số biên tập viên.
Chúc mừng.
Gửi email cho người chỉnh sửa với hướng dẫn đã sửa. bạn có thể gửi nó đến email của @nano, một trong những người biên tập
mailto: nano.world.contact@gmail.com
xin đừng để hướng dẫn như thế này
liên quan
Một điều khiến tôi ngạc nhiên: tại sao bạn lại sử dụng "from import *" trong mã của mình?
Chúc mừng!
Đây là cách nhập đúng, khi nhập như thế này, bạn cho nó biết lớp cụ thể của mô-đun bạn muốn nhập và bạn không gọi mô-đun hoàn chỉnh.
Chúc mừng.
Tôi thấy điều đó thật khó hiểu. Hơn nữa, nó không được khuyến nghị trong PEP8:
"Nên tránh nhập ký tự đại diện (từ nhập mô-đun *), vì chúng làm cho không rõ tên nào hiện diện trong không gian tên, gây nhầm lẫn cho cả người đọc và nhiều công cụ tự động ..."
Tôi đã được hướng dẫn hầu hết bởi các mã chuyên nghiệp, chẳng hạn như Ninja-Ide, bạn có thể xem mã tại đây: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyNó cũng được thực hiện trong PyQt, nhưng theo bất kỳ cách nào, không có gì buộc bạn phải sử dụng hình thức này hay hình thức khác.
Tại đây, bạn có thể xem một cuộc thảo luận trên StackOverflow, về điều này:
http://stackoverflow.com/questions/710551/import-module-or-from-module-import
Ở đó họ đề cập đến ưu và nhược điểm của từng phong cách.
ok xin lỗi tôi đã không hiểu bạn, tôi biết điều đó, tôi chỉ làm vậy vì tôi sẽ không đưa ra giải thích về từng yếu tố QApplication, QWidget, sau đó khái quát hóa nhưng bạn hoàn toàn đúng.
Xin thứ lỗi cho sự hiểu lầm.
Không, bạn không hiểu hoặc bạn không chú ý ... Ý tôi là sử dụng «từ nhập mô-đun *», nghĩa là «dấu hoa thị» ... trong bài đăng StackOverflow đó họ đang nói về một thứ khác, nhưng họ vẫn nhấn mạnh nó:
"Có thể chấp nhận một trong hai phương pháp, nhưng không sử dụng từ nhập mô-đun *."
Bây giờ nó đã được hiểu chưa?
Đức nói đúng. Việc sử dụng từ nhập mô-đun là gì nếu bạn nhập tất cả nội dung với asteric, cho mô-đun nhập đó. Slds chỉ là bài viết tốt đẹp.
Ahh tốt, bây giờ tôi đã hiểu… dù sao, đừng làm tôi mất nhiều thời gian, tôi cũng là người mới bắt đầu sử dụng Python. Nếu bạn ghé thăm blog của tôi, bạn sẽ thấy rằng tôi đã tạo một bài đăng tương tự như của bạn nhưng với Gtk + 3 bằng cách sử dụng PyGObject.
Xin chào và cảm ơn!
Ở đây tôi để lại Pep8, bằng tiếng Tây Ban Nha khuyến nghị sử dụng im
Rất không thể sử dụng nhập tương đối để nhập mã từ một gói. Luôn sử dụng đường dẫn tuyệt đối của gói cho tất cả các lần nhập. Ngay cả bây giờ PEP 328 [7] đã được triển khai hoàn toàn bằng Python 2.5, việc sử dụng nhập khẩu tương đối không được khuyến khích nghiêm túc; hàng nhập khẩu tuyệt đối dễ di chuyển hơn và thường dễ đọc hơn.
Khi nhập một lớp từ một mô-đun, việc làm này thường đúng
từ myclass nhập MyClass
từ foo.bar.yourclass nhập YourClass
Liên quan
Đọc này: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided
Alex Martelli (nhà phát triển core py) đề xuất những thứ như sau:
from PyQt4 import QtCore, QtGui
Tôi đã muốn nhiều hơn, cho khi phần 2 !?
Xin chào 🙂
Hướng dẫn rất tốt, cộng với việc lập trình có thể thoải mái hơn.
Đây là một ví dụ về giao diện từ đầu (không sử dụng QtDesigner).
https://github.com/xr09/metrocontador
Ứng dụng dhunter rất xuất sắc, ở đây chúng tôi thậm chí còn không biết họ tính bao nhiêu tiền điện cho chúng tôi, haha xin chào.
Cảm ơn bạn, đây là một trong những ứng dụng được tạo ra để sử dụng cá nhân và phục vụ những người khác. Ở Cuba, biên lai được chia nhỏ với tỷ lệ, rất dễ dàng để sao chép thuật toán.
Tôi sẽ rất ý thức về khóa học này. Tôi đã quan tâm đến các ứng dụng đa nền tảng từ lâu và tôi nghĩ sự kết hợp Python + QT / Pyside là một lựa chọn tuyệt vời. Xin chào và chúc mừng cho sáng kiến
Tôi đã làm theo tất cả các bước chính xác như bạn nói nhưng khi tôi chạy ứng dụng app1.py trong thiết bị đầu cuối, nó cho tôi biết Traceback (lần gọi gần đây nhất):
Tệp "app1.py", dòng 1, trong
từ nhập PySide.QtGui *
ImportError: Không có mô-đun nào có tên PySide.QtGui. Để làm gì đây ?.
đó là bởi vì bạn đang sử dụng phiên bản python làm trình thông dịch mặc định, nhưng bạn chưa cài đặt pyside cho phiên bản đó.
Hãy thử thêm vào đầu tệp:
#! usr / bin / python3
hoặc cái gì đó khác
#! usr / bin / python2
Tôi khuyên bạn nên sử dụng Eclipse với pydev và cấu hình tốt trình thông dịch.
trượt tuyết
#! / usr / bin / python3
hoặc cái gì đó khác
#! / usr / bin / python2
PySide chưa tương thích với Python3, hãy cẩn thận với điều đó và thứ hai, nó kiểm tra việc nhập thông qua bảng điều khiển python tương tác, vì vậy bạn biết bạn đã cài đặt nó hay chưa, nó cũng cài đặt pip.
Làm cách nào để xác minh nó?
Trong bảng điều khiển sử dụng "Python", dù sao tôi khuyên bạn nên nhập thư viện mà tôi đã để lại bên dưới trong bài đăng và tải xuống "python cho mọi người", bạn cần thêm cơ sở.
Xin chào và may mắn.
Cảm ơn bạn rất nhiều, nó rất hữu ích cho tôi.
nhìn bạn F3niX Tôi đã tìm thấy điều này, có vẻ như đối với python 3.3.2 trên windows (đó là những gì tôi có cho đến tuần sau) họ có mã nhị phân cho 32 bit và 64 bit, tôi đã thử ví dụ của bạn và nó hoạt động với python 3.3.2 và Tôi sử dụng PyScripter để cài đặt các môi trường khác nhau, nếu bạn mở python 3, nó chạy các tập lệnh dưới dạng python 3 và nếu bạn mở 2.7, nó thực thi chúng dưới dạng 2.7, v.v. (về mặt logic, bạn phải cài đặt phiên bản python đó ... Nó được hiểu)
http://qt-project.org/wiki/PySide_Binaries_Windows
Tôi sẽ để bạn ở đó, buôn chuyện, có lẽ nó sẽ phục vụ người khác 😀
Tôi nhận được lỗi tương tự.
Bạn đã cài đặt PySide chưa?
Tôi đã cài đặt nó.
Và hãy thử với PyQT4 cài đặt nó và sau đó thay đổi các dòng PySide cho PyQT4 hoặc PyQt4 và cho nó chạy. jojo. Sử dụng nhật thực. Sự may mắn.
Làm thế nào để làm điều đó?.
Cảm ơn rât nhiều !!! Chờ chương thứ hai
Đối với thứ sáu này, tôi có thể xuất bản nó (Trường đại học có tôi một chút đầy đủ) lời chào.
Bạn F3nIX Tôi đang chờ hướng dẫn của bạn N ° 2, 3, 4… N hehehe
Tôi đã cài đặt linux rất thanh lịch của mình với tính năng chờ PySide và mọi thứ!
Hãy xem khi nào anh ấy được khuyến khích giới thiệu một gia sư mới 😀
Xin lỗi bạn, tôi có nó trong bản nháp nhưng công việc và học tập không cho tôi thời gian, tôi hứa sẽ hoàn thành một vài thứ trong tuần này.
Một lời chào lớn
Xin chào, tôi đã quan tâm đến việc học Python trong một thời gian dài nhưng tôi có một số nghi ngờ. Điều tôi muốn là tạo một ứng dụng để cải thiện một chút quy trình thông tin của doanh nghiệp gia đình nơi tôi làm việc, tôi muốn làm một cái gì đó cho windows, với windows lúc đầu, nó sẽ hoạt động tất cả trên một máy tính duy nhất và sau đó nó có thể được kết nối qua internet với cơ sở dữ liệu mà một vài máy tính sẽ kết nối. Có rất nhiều sự đa dạng về giao diện người dùng của ứng dụng và điều đó khiến tôi choáng váng. Bạn đề nghị gì để tạo cho nó một cái nhìn hiện đại và hấp dẫn? Tôi cũng sẽ tạo một số biểu đồ thống kê và báo cáo in, tôi có thể sử dụng gì cho việc đó? Chúc mừng
Xin chào, rất tốt cho bài viết của bạn, tôi có một câu hỏi. Tôi có thể bán ứng dụng của mình được làm bằng pyside mà không gặp vấn đề gì không?
Chà, giấy phép luôn điên rồ, nhưng giấy phép phần mềm miễn phí cũng cho phép bạn bán phần mềm, điều xảy ra là GPL buộc bạn phải phân phối mã, không giống như LGPL, không buộc bạn phải làm như vậy.
Trong mọi trường hợp, tôi không phải là chuyên gia về cấp phép.
Chúc mừng.