আমি কি নতুন কিউটি প্রকল্পের জন্য পাইকিউটি বা পাইসাইড ব্যবহার করব?


59

সম্প্রতি আমি Qt এবং QtQuick উবুন্টু অ্যাপ্লিকেশনটির জন্য দ্রুত টেম্পলেট তৈরি সম্পর্কে কথোপকথনে জড়িত হয়েছি। ধারণাটি হ'ল GTK এর সাথে ঠিক এখন যেমন ধারণাটি থেকে প্যাকেজ পর্যন্ত কিউটি অ্যাপ্লিকেশনগুলি বিকাশ করা সহজ করা হয়, যার ভিত্তিতে উবুন্টু অ্যাপ্লিকেশন দ্রুত টেম্পলেট ভিত্তিক।

উদ্দেশ্য এখনও বেস প্রোগ্রামিং ভাষা হিসেবে পাইথন ব্যবহার করা, এবং প্রথম প্রশ্ন মনে আসে হল: যা পাইথন বাইন্ডিং আমরা ব্যবহার করা উচিত PyQt বা PySide ?

আমি উভয় প্রযুক্তিতে অভিজ্ঞ লোকদের কাছ থেকে শুনতে চাই যে প্রত্যেকের উপকারিতা এবং বিপরীতগুলি কী, প্রত্যেকে কতটা ভালভাবে রক্ষণাবেক্ষণ করা হয়, কিউটি এপিআই, বাইন্ডিংগুলিতে কতটা ম্যাপযুক্ত হয় ইত্যাদি etc.

ধন্যবাদ!


ওয়েল পাইথন-কিউটি 4 মূল এবং পাইথন-পাইসাইড মহাবিশ্বে রয়েছে। আমি মনে করি আপনার সম্ভবত কুবুন্টু ছেলেদের কাছে এটি জিজ্ঞাসা করা উচিত।
জেরেমি বিচা

এই প্রশ্নটি আরও ভাল স্ট্যাকওভারফ্লো.কম বা প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জের.কম এ রাখা যেতে পারে।
ডারএল

ধন্যবাদ @ ডিআরএল, হ্যাঁ, আমি এটিও ভাবছিলাম, তবে এটি বিশেষত উবুন্টুর জন্য একটি দ্রুত টেম্পলেট তৈরি করার জন্য ছিল, যার কারণেই আমি আস্কউবুন্টুর জন্য সিদ্ধান্ত নিয়েছিলাম।
ডেভিড প্লানেলা

উত্তর:


63

পাইকিউটি 4 এবং পাইসাইড উভয়েরই কিউটি এপিআই-তে খুব অনুরূপ ম্যাপিং রয়েছে। তবে কিছু পার্থক্য রয়েছে, আমার মতামত যা সম্পর্কে নীচে বর্ণিত:

রক্ষণাবেক্ষণ

তারা উভয় ভাল রক্ষণাবেক্ষণ করা হয়। পাইসাইড এই মুহুর্তে আরও অনেক নিয়মিত প্রকাশ প্রকাশ করে: আমি মনে করি এটি পাইকিউটি 4 এর তুলনায় Qt এর সাথে আরও জড়িত এবং একটি নতুন প্রকল্প হিসাবে এই মুহুর্তে আরও সক্রিয় সম্প্রদায় রয়েছে। তবে এটি কেবল আমার ধারণা এবং এটি ভুলও হতে পারে।

পাইকিউটি 4-তে বাণিজ্যিক সহায়তার উপলভ্য বিকল্প রয়েছে (এটি পাইসাইডের জন্য সত্য কিনা তা আমি জানি না)।

লাইসেন্স

পাইকিউটি 4 বাণিজ্যিক লাইসেন্স বা জিপিএল এর অধীনে প্রকাশিত হয়েছে ; পাইসাইড এলজিপিএল-এর অধীনে প্রকাশিত হয়েছে । বাণিজ্যিক অ্যাপ্লিকেশনগুলির জন্য, এটি একটি উল্লেখযোগ্য পার্থক্য।

এপিআই এবং পাইথন সংস্করণ

পাইকিউটি 4 দুটি পৃথক এপিআই সমর্থন করে। পাইথন ২.x অ্যাপ্লিকেশনগুলির জন্য এপিআই সংস্করণ ১ ডিফল্ট এবং পাইথন ৩.x অ্যাপ্লিকেশনগুলির জন্য এপিআই সংস্করণ ২ ডিফল্ট।

PySide শুধুমাত্র একটি এপিআই, যা PyQt4 এর API সংস্করণ 2. API সংস্করণ 2 (বা PySide এপিআই) এর মোটামুটিভাবে সমতূল্য সমর্থন করে অনেক সঙ্গে PyQt4 এর API সংস্করণ 1. API সংস্করণ 1 তুলনায় আপনি যে পাইথন কাস্ট কোড অনেক আছে কাজ করতে সুন্দর স্ট্রিং QtCore.QStringগুলি এস এবং আবার ফিরে। এপিআই সংস্করণ ২ (এবং পাইসাইড) এ আপনি কেবল অজগর স্ট্রিং ব্যবহার করেন। আপনি উভয় সাথে খেলতে চাইলে পাইকিউটি 4 এবং পাইসাইডের মধ্যে স্যুইচ করার সহজ উপায়টির জন্য নীচে দেখুন।

আমি যে বেশিরভাগ কোড লিখি তা পাইকুইটি 4 এবং পাইসাইডে সমানভাবে কাজ করে বলে মনে হচ্ছে। .তিহাসিকভাবে, আমি পাইথন জিইআইআই-এর জন্য আমি সর্বদা পাইকিউ 4 ব্যবহার করেছি তবে এখন আমি যে নতুন নতুন জিনিস লিখি তা পাইসাইড ব্যবহার করে (মূলত আরও নমনীয় লাইসেন্সের কারণে)। আমি অবশ্যই আপনাকে উভয় চেষ্টা করার পরামর্শ দিচ্ছি এবং কীভাবে আপনি এটি পেয়েছেন তা দেখুন। আপনি যদি QtVariant.py (নীচে) ব্যবহার করেন তবে তাদের মধ্যে স্যুইচিং তুচ্ছ এবং আপনি যখন সিদ্ধান্ত নেবেন তখন কেবল একটি ফাইল থাকবে যা আপডেটের প্রয়োজন।

নথিপত্র

পাইকিউ 4 এবং পাইসাইড উভয়ের জন্য ডকুমেন্টেশনগুলি মূল কিউটি ডকুমেন্টেশন থেকে স্বয়ংক্রিয়ভাবে উত্পাদিত । আমার মতে পাইসাইড ডকুমেন্টেশনগুলি আপনি আসলে যা ব্যবহার করেন তার একটি আরও ভাল উপস্থাপনা, তবে বাস্তবে আমি যেভাবেই হোক Qt ডকুমেন্টেশন ব্যবহার করি (এটি সি ++ ডকুমেন্টেশনটিকে মানসিকভাবে পাইথনে অনুবাদ করা বেশ সহজ)।

বাহ্যিক গ্রন্থাগারসমূহ

আপনি যদি বাহ্যিক গ্রন্থাগার ব্যবহার করছেন তবে কিছু পাইসাইড নিয়ে এখনও কাজ করেন না। সত্য কথা বলার জন্য আপনাকে পাইসাইটের সাথে কাজ করার দরকার নেই, তবে বেশ কয়েক বছর আগে আমি এমন কিছু কোড লিখেছিলাম যাতে টুইস্ট ব্যবহার করা হয়েছিল (Qt চুল্লি সহ) এবং ম্যাটপ্ল্লোলিব এবং এটি আমাকে পাইসাইটের পরিবর্তে পাইকিউটি 4 ব্যবহারের লাইনটি নীচে নামিয়ে দিয়েছে । আমি মনে করি যে সম্ভবত এই লাইব্রেরিগুলিকে উভয়ই সমর্থন করার জন্য আপডেট করা হবে তবে আমি পরীক্ষা করে দেখিনি।

পাইকিউটি 4 বা পাইসাইটের সাথে কোড তৈরির কাজ work

ধরে নিই যে আপনি পাইথন ২.x ব্যবহার করছেন, আপনি QtVariant.py বানিয়ে এবং ব্যবহার করে পাইয়েসাইড এবং পাইকিউটি 4 উভয়ের সাথে আপনার কোডটি মোটামুটি সহজেই তৈরি করতে পারেন :

from QtVariant import QtGui, QtCore

বা যাই হোক না কেন. আমি যে QtVariant.py ব্যবহার করি তা দেখতে এই রকম দেখাচ্ছে:

import sys
import os

default_variant = 'PySide'

env_api = os.environ.get('QT_API', 'pyqt')
if '--pyside' in sys.argv:
    variant = 'PySide'
elif '--pyqt4' in sys.argv:
    variant = 'PyQt4'
elif env_api == 'pyside':
    variant = 'PySide'
elif env_api == 'pyqt':
    variant = 'PyQt4'
else:
    variant = default_variant

if variant == 'PySide':
    from PySide import QtGui, QtCore
    # This will be passed on to new versions of matplotlib
    os.environ['QT_API'] = 'pyside'
    def QtLoadUI(uifile):
        from PySide import QtUiTools
        loader = QtUiTools.QUiLoader()
        uif = QtCore.QFile(uifile)
        uif.open(QtCore.QFile.ReadOnly)
        result = loader.load(uif)
        uif.close()
        return result
elif variant == 'PyQt4':
    import sip
    api2_classes = [
            'QData', 'QDateTime', 'QString', 'QTextStream',
            'QTime', 'QUrl', 'QVariant',
            ]
    for cl in api2_classes:
        sip.setapi(cl, 2)
    from PyQt4 import QtGui, QtCore
    QtCore.Signal = QtCore.pyqtSignal
    QtCore.QString = str
    os.environ['QT_API'] = 'pyqt'
    def QtLoadUI(uifile):
        from PyQt4 import uic
        return uic.loadUi(uifile)
else:
    raise ImportError("Python Variant not specified")

__all__ = [QtGui, QtCore, QtLoadUI, variant]

2
পাইসাইড যেহেতু অনেক সময় উচ্চ-স্তরের পাইথন অবজেক্ট গ্রহণ করে, তাই আপনার ইউআই লোডার ফাংশনটি return QtUiTools.QUiLoader().load(uifile)এমন কিউফাইল বয়লারপ্লেট ছাড়াই ফাইলপথ গ্রহণের মতো কিছুতে সহজ করা যেতে পারে ।
ক্রিস বিলিংটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.