ขั้นตอนแรกกับ Python + Qt # 1

บทช่วยสอนนี้มุ่งเน้นไปที่การสอนการใช้กรอบงาน QT โดยใช้ Python เป็นภาษาโปรแกรมสำหรับสิ่งนี้เราสามารถใช้ได้ทั้ง PySide และ PyQt แต่ในบทช่วยสอนนี้เราจะใช้ PySide เนื่องจากผู้เขียนบทช่วยสอนนี้ชอบใบอนุญาต LGPL PySide มากกว่า มากกว่า GPL หรือ PyQt Commercial

อันดับแรก ... Python คืออะไร?

อ้างอิงจาก Wikipedia:

"Python เป็นภาษาการเขียนโปรแกรมที่มีการตีความระดับสูงมากซึ่งปรัชญาเน้นไวยากรณ์ที่สะอาดมากและสนับสนุนโค้ดที่อ่านได้"

Python เป็นภาษาการเขียนโปรแกรมแบบหลายแถบดังนั้นจึงสนับสนุนกระบวนทัศน์การเขียนโปรแกรม Python ที่แตกต่างกันเช่นรองรับ: Object Oriented Programming (OOP), Imperative Programming (Structured) และในระดับที่น้อยกว่าการเขียนโปรแกรมเชิงฟังก์ชัน

ว่ามีเพียง?

ไม่มันยังเป็นภาษาพิมพ์แบบไดนามิกซึ่งหมายความว่า python ช่วยให้เราสามารถกำหนดค่าประเภทต่างๆให้กับตัวแปรเดียวกันในระหว่างการทำงานของโปรแกรมบางคนมองว่าเป็นข้อได้เปรียบคนอื่นเป็นข้อเสียดูเอาเอง .

นอกเหนือจากสิ่งที่ได้กล่าวไปแล้ว Python ยังช่วยให้เรา (เช่นเดียวกับคนอื่น ๆ อีกมากมาย) การเขียนโปรแกรมทั้งในสภาพแวดล้อมเว็บและในเว็บเดสก์ท็อปมันยังเป็นข้ามแพลตฟอร์มปัจจุบันรองรับ Gnu / Linux, Windows, Mac osx, Android (หากคุณต้องการกล่าวถึงพวกเขาสำหรับการปรับเปลี่ยนของคุณ)

QT คืออะไร?

QT เป็นเฟรมเวิร์กแบบหลายแพลตฟอร์มที่พัฒนาโดย Nokia เพื่อขายต่อให้กับ Digia ซึ่งใช้สำหรับการพัฒนาแอพพลิเคชั่นมันถูกเขียนด้วยภาษา C ++ แต่สามารถใช้ในภาษาอื่นผ่าน Bindings (ในกรณีของเราคือ PySide หรือ PyQt)

ความแตกต่างระหว่าง PySide และ PyQt

ส่วนใหญ่

  • ใบอนุญาต PySide ได้รับอนุญาตภายใต้เงื่อนไขของ LGPL และ PyQT อยู่ภายใต้เงื่อนไขของ GPL หรือภายใต้ใบอนุญาตทางการค้าดังนั้นเราจะต้องจ่ายเงินในกรณีที่สร้างแอปพลิเคชันแบบปิด
  • PySide สร้างโดย Nokia และ PyQt โดย RiverBank
  • PySide ช่วยให้เราประหยัดปัญหาในการใช้ STR ทุกครั้งที่เราใช้ QString ของแต่ละออบเจ็กต์ QT

เราสามารถดูรายละเอียดการเปลี่ยนแปลงทั้งหมด ที่นี่.

เตรียม:

เราติดตั้ง Qt:

หากเรามี distro กับ Kde เราควรมีสิ่งที่ต้องการอยู่แล้วถ้าไม่มี:

sudo apt-get ติดตั้ง qt4-dev-tools

เราติดตั้ง PySide:

sudo apt-get install pyside pyside-tools

แอปพลิเคชัน Python + QT ตัวแรกของเรา

เราไปที่โปรแกรมแก้ไขข้อความที่เราชื่นชอบขอแนะนำให้คุณติดตั้ง sublime-text2 แต่คุณสามารถใช้รหัสที่คุณต้องการได้และเราพิมพ์รหัสต่อไปนี้และบันทึกด้วยชื่อที่เราต้องการลงท้ายด้วยนามสกุล ".py" ฉันจะบันทึกเป็น app1.py:

3

ดูรหัส

เราเรียกใช้จากคอนโซลดังนี้:

python app1.py

หน้าต่างนี้จะปรากฏขึ้น

2

อะไรเท่านั้นเพราะถ้าก่อนหน้านี้คุณมีคอนโซลคุณจะบ่นอะไร? คุณคาดหวังอะไร Erp? มาหามนุษย์เพื่อเริ่มต้นบางสิ่งบางอย่าง

ตอนนี้ขออธิบายรหัส:

from PySide.QtGui import *

from sys import exit, argv

ที่นี่เรานำเข้าโมดูลที่จำเป็นสำหรับการดำเนินการ PySide

app = QApplication(argv)

เราสร้างอินสแตนซ์ Qapplication ด้วยแอพชื่อ

window = Qwidget()

เราสร้างอินสแตนซ์ QWidget ()

window.setWindowTitle("Primera App PySide")

เราดำเนินการเมธอด setWindowTitle ซึ่งได้รับ String เป็นพารามิเตอร์เพื่อ "ตั้งค่า" หัวเรื่องของ Qwidget ของเรา

window.show()

เราแสดงหน้าต่างของเรา

exit(app.exec_())

ในที่สุดเราก็ดำเนินการวงจรที่ไม่มีที่สิ้นสุดของการดำเนินการ QApplication ()

กราเซีย

ขอบคุณสำหรับผู้ที่ติดตามเรามา ณ ที่นี้และเป็นประโยชน์ สำหรับบทช่วยสอนถัดไปฉันจะอธิบายวิธีการออกแบบหน้าต่างของเราด้วย QT Designer และนำเข้าสู่โครงการของเรา

นอกจากนี้ ฉันยังเพิ่มลิงก์ไปยังฟอรัมด้วย desde linux โดยที่ฉันมีธีมเล็กๆ พร้อมไลบรารี่บทช่วยสอนและคำแนะนำเกี่ยวกับ Python ขนาดเล็ก ซึ่งมีคำศัพท์ที่แตกต่างกัน ได้แก่:

บทเรียน Python พื้นฐาน

wxPython

PyQt และ PySide

Django

web2py

การเขียนโปรแกรมทางวิทยาศาสตร์ใน python

และอื่น ๆ อีกมากมาย.

ลิงก์ไปยังฟอรัม

ฉันหวังว่าพวกเขาจะรับใช้คุณฉันบอกลาเพราะมีความสุขเสมอที่ได้เป็นส่วนหนึ่งของชุมชนที่ยอดเยี่ยมนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   @ trust 17 dijo

    ขอบคุณสำหรับโพสต์!

  2.   แอนนูบิส dijo

    2 อย่าง:

    1. Qt ไม่ได้พัฒนาโดย Nokia แต่โดย Trolltech ซึ่ง Nokia ซื้อต่อมา ตอนหลังขาย Qt ให้ Digia
    2. รูปภาพในตัวอย่างแอปพลิเคชันแรกไม่ตรงกับรหัส

    ขอบคุณสำหรับบทช่วยสอนฉันจะติดตาม :)

    1.    f3niX dijo

      คุณพูดถูกจริงๆที่ฉันพลาด และสิ่งที่สองที่คุณพูดถูกคือฉันเปลี่ยนมันเพื่อให้ง่ายขึ้นและไม่ใช้คลาสและฉันพลาดการแก้ไขข้อผิดพลาดเริ่มต้น ฉันได้ส่งการแก้ไขให้บรรณาธิการบางคนอนุมัติแล้ว

    2.    f3niX dijo

      ฉันไม่สามารถแก้ไขได้ฉันปล่อยให้บรรณาธิการบางส่วน

      อาศิรพจน์

      1.    เนย์สัน dijo

        ส่งอีเมลถึงผู้แก้ไขพร้อมคำแนะนำที่แก้ไข คุณสามารถส่งไปที่อีเมลของ @nano ซึ่งเป็นหนึ่งในบรรณาธิการ
        mailto: nano.world.contact@gmail.com
        โปรดอย่าออกจากการสอนเช่นนี้
        ขอแสดงความนับถือ

  3.   เยอรมัน dijo

    สิ่งหนึ่งที่ทำให้ฉันประทับใจ: ทำไมคุณถึงใช้ "from import *" ในโค้ดของคุณ

    ทักทาย!

    1.    f3niX dijo

      เป็นวิธีการนำเข้าที่ถูกต้องเมื่อนำเข้าเช่นนี้คุณจะต้องแจ้งให้ทราบว่าคุณต้องการนำเข้าคลาสใดโดยเฉพาะและคุณจะไม่เรียกโมดูลทั้งหมด

      อาศิรพจน์

      1.    เยอรมัน dijo

        ฉันรู้สึกสับสนแบบนั้น นอกจากนี้ไม่แนะนำใน PEP8:

        "ควรหลีกเลี่ยงการนำเข้าสัญลักษณ์แทน (จากการนำเข้าโมดูล *) เนื่องจากทำให้ไม่ชัดเจนว่าชื่อใดอยู่ในเนมสเปซทำให้สับสนทั้งผู้อ่านและเครื่องมืออัตโนมัติจำนวนมาก ... "

        1.    f3niX dijo

          ฉันได้รับคำแนะนำจากรหัสมืออาชีพเป็นส่วนใหญ่เช่น Ninja-Ide คุณสามารถดูรหัสได้ที่นี่: https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/core/ipc.pyมันทำใน PyQt เช่นกัน แต่ในรูปแบบใด ๆ ไม่มีสิ่งใดที่บังคับให้คุณใช้รูปแบบใดรูปแบบหนึ่ง

          คุณสามารถดูการสนทนาบน StackOverflow ได้ที่นี่:

          http://stackoverflow.com/questions/710551/import-module-or-from-module-import

          พวกเขากล่าวถึงข้อดีข้อเสียของแต่ละสไตล์

          1.    f3niX dijo

            โอเคขอโทษที่ฉันไม่เข้าใจคุณฉันรู้ว่าฉันทำไปเพียงเพราะฉันจะไม่ให้คำอธิบายของแต่ละองค์ประกอบ QApplication, QWidget แล้วสรุป แต่คุณพูดถูกจริงๆ

            ขอโทษที่เข้าใจผิด

          2.    เยอรมัน dijo

            ไม่คุณไม่เข้าใจหรือคุณไม่ได้ใส่ใจ ... ฉันหมายถึงใช้«จากการนำเข้าโมดูล * »นั่นคือฉันหมายถึง«ดอกจัน» ... ในโพสต์ StackOverflow ที่พวกเขากำลังพูดถึงอย่างอื่น แต่พวกเขายังคงเน้นย้ำ:

            "ยอมรับวิธีใดก็ได้ แต่อย่าใช้จากการนำเข้าโมดูล *"

            ตอนนี้เข้าใจแล้วหรือยัง?

          3.    Felipe dijo

            ภาษาเยอรมันพูดถูก อะไรคือการใช้การนำเข้าจากโมดูลหากคุณนำเข้าเนื้อหาทั้งหมดด้วยเครื่องหมายดอกจันสำหรับโมดูลการนำเข้านั้น Slds เป็นโพสต์ที่ดี

          4.    เยอรมัน dijo

            อืมตอนนี้ฉันเข้าใจแล้ว…อย่างไรก็ตามอย่าใช้เวลานานเกินไปฉันยังเป็นมือใหม่ใน Python หากคุณเยี่ยมชมบล็อกของฉันคุณจะเห็นว่าฉันโพสต์คล้ายกับของคุณ แต่ใช้ Gtk + 3 โดยใช้ PyGObject

            ทักทายและขอบคุณ!

        2.    f3niX dijo

          ที่นี่ฉันออกจาก Pep8 เป็นภาษาสเปนแนะนำให้ใช้ im
          ไม่ควรอย่างยิ่งที่จะใช้การนำเข้าแบบสัมพัทธ์เพื่อนำเข้ารหัสจากแพ็คเกจ ใช้เส้นทางสัมบูรณ์ของแพ็กเกจสำหรับการนำเข้าทั้งหมดเสมอ แม้ว่าตอนนี้ PEP 328 [7] จะถูกนำมาใช้อย่างสมบูรณ์ใน Python 2.5 แต่การใช้การนำเข้าแบบสัมพัทธ์ก็ไม่ได้รับการสนับสนุน การนำเข้าแบบสัมบูรณ์สามารถพกพาได้มากกว่าและมักจะอ่านได้มากกว่า

          เมื่อคุณนำเข้าคลาสจากโมดูลมักจะทำได้ถูกต้อง
          จาก myclass นำเข้า MyClass
          จาก foo.bar.yourclass นำเข้า YourClass

          ความนับถือ

          1.    นักล่า dijo

            อ่านนี่: http://stackoverflow.com/questions/3615125/should-wildcard-import-be-avoided

            Alex Martelli (ผู้พัฒนา core py) แนะนำสิ่งนี้:


            from PyQt4 import QtCore, QtGui

  4.   MSX dijo

    ฉันต้องการมากกว่านี้สำหรับเมื่อภาค 2!?
    ทักทาย🙂

  5.   Eliotime3000 dijo

    แบบฝึกหัดที่ดีมากและการเขียนโปรแกรมอาจสะดวกสบายกว่าด้วย

  6.   นักล่า dijo

    นี่คือตัวอย่างของอินเทอร์เฟซตั้งแต่เริ่มต้น (โดยไม่ต้องใช้ QtDesigner)

    https://github.com/xr09/metrocontador

    1.    f3niX dijo

      แอพ dhunter นั้นยอดเยี่ยมมากที่นี่เราไม่รู้ด้วยซ้ำว่าพวกเขาคิดค่าไฟฟ้าเท่าไรฮ่า ๆ ทักทาย

      1.    นักล่า dijo

        ขอบคุณเป็นหนึ่งในแอพที่สร้างขึ้นเพื่อการใช้งานส่วนตัวและให้บริการผู้อื่น ที่นี่ในคิวบาใบเสร็จจะถูกแยกย่อยตามอัตราการคัดลอกอัลกอริทึมทำได้ง่าย

  7.   Jose Eloy dijo

    ฉันจะตระหนักถึงหลักสูตรนี้เป็นอย่างดี ฉันสนใจแอปพลิเคชันข้ามแพลตฟอร์มมานานแล้วและฉันคิดว่าการผสมผสาน Python + QT / Pyside เป็นตัวเลือกที่ยอดเยี่ยม ทักทายและแสดงความยินดีสำหรับความคิดริเริ่ม

  8.   ไบรอันโรดริเกซ dijo

    ฉันทำตามขั้นตอนทั้งหมดตามที่คุณพูด แต่เมื่อฉันเรียกใช้แอปพลิเคชัน app1.py ในเทอร์มินัลมันจะบอกฉันว่า Traceback (โทรล่าสุดล่าสุด):
    ไฟล์ "app1.py" บรรทัดที่ 1 ใน
    จากการนำเข้า PySide.QtGui *
    ImportError: ไม่มีโมดูลชื่อ PySide.QtGui นี่คืออะไร?.

    1.    Felipe dijo

      นั่นเป็นเพราะคุณใช้ python เวอร์ชันเป็นล่ามเริ่มต้น แต่คุณไม่ได้ติดตั้ง pyside สำหรับเวอร์ชันนั้น

      ลองเพิ่มที่จุดเริ่มต้นของไฟล์:
      #! usr / bin / python3
      หรืออื่น ๆ
      #! usr / bin / python2

      ฉันแนะนำให้คุณใช้ Eclipse กับ pydev และกำหนดค่าล่ามให้ดี
      SLDs

      1.    Felipe dijo

        #! / usr / bin / python3
        หรืออื่น ๆ
        #! / usr / bin / python2

        1.    f3niX dijo

          PySide ยังไม่สามารถใช้งานร่วมกับ Python3 ได้โปรดใช้ความระมัดระวังและประการที่สองตรวจสอบการนำเข้าผ่านคอนโซล python แบบโต้ตอบดังนั้นคุณจะรู้ว่าคุณได้ติดตั้งหรือไม่นอกจากนี้ยังติดตั้ง pip ด้วย

          1.    ไบรอันโรดริเกซ dijo

            ฉันจะตรวจสอบได้อย่างไร?

          2.    f3niX dijo

            ในคอนโซลใช้ "Python" อย่างไรก็ตามฉันขอแนะนำให้คุณเข้าสู่ไลบรารีที่ฉันทิ้งไว้ด้านล่างในโพสต์และดาวน์โหลด "python for everyone" คุณต้องมีฐานเพิ่มเติม

            ทักทายและโชคดี

          3.    ไบรอันโรดริเกซ dijo

            ขอบคุณมากมันเป็นประโยชน์กับฉันมาก

          4.    เมาริซิโอโตบาเรส dijo

            ดูเป็นเพื่อน F3niX ฉันพบสิ่งนี้ดูเหมือนว่าสำหรับ python 3.3.2 บน windows (ซึ่งเป็นสิ่งที่ฉันมีจนถึงสัปดาห์หน้า) พวกเขามีไบนารี 32 บิตและ 64 บิตฉันลองใช้ตัวอย่างของคุณและใช้ได้กับ python 3.3.2 และ ฉันใช้ PyScripter ที่ติดตั้งสภาพแวดล้อมที่แตกต่างกันถ้าคุณเปิด python 3 มันจะเรียกใช้สคริปต์เป็น python 3 และถ้าคุณเปิด 2.7 มันจะเรียกใช้งานเป็น 2.7 และอื่น ๆ (เหตุผลคุณต้องติดตั้ง python เวอร์ชันนั้น ... เข้าใจ)

            http://qt-project.org/wiki/PySide_Binaries_Windows

            ฉันจะปล่อยคุณไว้ที่นั่นซุบซิบบางทีมันอาจจะรับใช้คนอื่น😀

      2.    ไบรอันโรดริเกซ dijo

        ฉันได้รับข้อผิดพลาดเดียวกัน

        1.    เยอรมัน dijo

          คุณติดตั้ง PySide หรือไม่

          1.    ไบรอันโรดริเกซ dijo

            ฉันได้ติดตั้งแล้ว

        2.    Felipe dijo

          และลองใช้ PyQT4 ติดตั้งแล้วเปลี่ยนบรรทัด PySide สำหรับ PyQT4 หรือ PyQt4 และให้มันทำงาน jojo. ใช้คราส โชค.

          1.    ไบรอันโรดริเกซ dijo

            ฉันจะทำอย่างไร?.

  9.   Karlinux dijo

    ขอบคุณมาก !!! กำลังรอบทที่สอง

    1.    f3niX dijo

      สำหรับวันศุกร์นี้ฉันอาจจะเผยแพร่มัน (มหาวิทยาลัยมีฉันเล็กน้อย) ทักทาย

  10.   เมาริซิโอโตบาเรส dijo

    เพื่อน F3nIX ฉันกำลังรอการสอนของคุณ N ° 2, 3, 4 ... N hehehe

    ฉันติดตั้งลินุกซ์ที่หรูหรามากแล้วพร้อมกับ PySide waiting และทุกอย่าง

    มาดูกันว่าเมื่อไหร่เขาจะได้รับการสนับสนุนให้แสดงติวเตอร์คนใหม่😀

    1.    f3niX dijo

      ขอโทษนะเพื่อนฉันมีแบบร่าง แต่งานและการเรียนไม่ได้ให้เวลาฉันสัญญาว่าจะเอาอะไรออกไปในสัปดาห์นี้

      ทักทายกันใหญ่

  11.   ดานเต้ dijo

    สวัสดีครับผมสนใจที่จะเรียนภาษา Python มานานแล้ว แต่มีข้อสงสัยบางประการ สิ่งที่ฉันต้องการคือการสร้างแอปพลิเคชันเพื่อปรับปรุงกระบวนการข้อมูลเล็กน้อยของธุรกิจครอบครัวที่ฉันทำงานฉันต้องการทำบางอย่างสำหรับ windows โดยในตอนแรก windows มันจะทำงานทั้งหมดบนพีซีเครื่องเดียวแล้วจึงสามารถทำได้ เชื่อมต่อผ่านอินเทอร์เน็ตไปยังฐานข้อมูลที่คอมพิวเตอร์สองเครื่องจะเชื่อมต่อ มีความหลากหลายมากในแง่ของ GUIing แอปพลิเคชันและนั่นทำให้ฉันเวียนหัว คุณแนะนำอะไรเพื่อให้ดูทันสมัยและน่าสนใจ? ฉันจะทำกราฟิกเชิงสถิติและพิมพ์รายงานด้วยฉันจะใช้อะไรได้บ้าง ความนับถือ

  12.   Jorge dijo

    สวัสดีโพสต์ของคุณดีมากฉันมีคำถามฉันสามารถขายแอพของฉันที่สร้างด้วย pyside โดยไม่มีปัญหาได้หรือไม่?

    1.    f3niX dijo

      ใบอนุญาตมักจะบ้า แต่ลิขสิทธิ์ซอฟต์แวร์ฟรียังอนุญาตให้คุณขายซอฟต์แวร์สิ่งที่เกิดขึ้นคือ GPL บังคับให้คุณแจกจ่ายรหัสซึ่งแตกต่างจาก LGPL ซึ่งไม่ได้บังคับให้คุณทำเช่นนั้น

      ไม่ว่าในกรณีใดฉันไม่ใช่ผู้เชี่ยวชาญด้านการออกใบอนุญาต

      อาศิรพจน์