Các bước đầu tiên với Python + Qt # 1

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:

3

Xem mã

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

2

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.

LIÊN KẾT VỚI DIỄN ĐÀN

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.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   @ trust17 dijo

    Cảm ơn vì bài đăng!

  2.   anubis dijo

    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ó 🙂

    1.    f3niX dijo

      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.

    2.    f3niX dijo

      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.

      1.    neysonv dijo

        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

  3.   Germán dijo

    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!

    1.    f3niX dijo

      Đâ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.

      1.    Germán dijo

        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 ..."

        1.    f3niX dijo

          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.

          1.    f3niX dijo

            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.

          2.    Germán dijo

            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?

          3.    Felipe dijo

            Đứ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.

          4.    Germán dijo

            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!

        2.    f3niX dijo

          Ở đâ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

          1.    thợ săn dijo

            Đọ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

  4.   msx dijo

    Tôi đã muốn nhiều hơn, cho khi phần 2 !?
    Xin chào 🙂

  5.   eliotime3000 dijo

    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.

  6.   thợ săn dijo

    Đây là một ví dụ về giao diện từ đầu (không sử dụng QtDesigner).

    https://github.com/xr09/metrocontador

    1.    f3niX dijo

      Ứ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.

      1.    thợ săn dijo

        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.

  7.   Jose Eloy dijo

    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

  8.   Bryan Rodriguez dijo

    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 ?.

    1.    Felipe dijo

      đó 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

      1.    Felipe dijo

        #! / usr / bin / python3
        hoặc cái gì đó khác
        #! / usr / bin / python2

        1.    f3niX dijo

          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.

          1.    Bryan Rodriguez dijo

            Làm cách nào để xác minh nó?

          2.    f3niX dijo

            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.

          3.    Bryan Rodriguez dijo

            Cảm ơn bạn rất nhiều, nó rất hữu ích cho tôi.

          4.    Mauricio Tobares dijo

            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 😀

      2.    Bryan Rodriguez dijo

        Tôi nhận được lỗi tương tự.

        1.    Germán dijo

          Bạn đã cài đặt PySide chưa?

          1.    Bryan Rodriguez dijo

            Tôi đã cài đặt nó.

        2.    Felipe dijo

          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.

          1.    Bryan Rodriguez dijo

            Làm thế nào để làm điều đó?.

  9.   karlinux dijo

    Cảm ơn rât nhiều !!! Chờ chương thứ hai

    1.    f3niX dijo

      Đố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.

  10.   MauricioTobares dijo

    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 😀

    1.    f3niX dijo

      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

  11.   Dante dijo

    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

  12.   Jorge dijo

    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?

    1.    f3niX dijo

      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.