میک ایپ اسٹور پر ٹوڈو ، ایک سادہ ٹوڈو ایپ کی تعمیر کے لئے PYQT5 ماڈل ویو فن تعمیر کا استعمال کرتے ہوئے

نظریات میں ڈیٹا کی نمائش کے لئے ماڈل ویو آرکیٹیکچر کیو ٹی ایس ایم وی سی نما انٹرفیس

چلانے والی ایپ نیچے دکھائی گئی ہے.

ٹوڈو 4+

کئی سالوں سے میں نے اس ایپلی کیشن کو اپنے آئی پیڈ ، اپنے آئی فون اور اپنے میک بوک پرو پر استعمال کیا. اگر یہ iOS پر بالکل کام کرتا رہتا ہے تو ، ایسا لگتا ہے کہ اس نے میکوس کے ارتقا کی مکمل پیروی نہیں کی ہے۔.
اسے انسٹال کرنے میں کوئی پریشانی نہیں ہے. لیکن اب میکوس پر ٹوڈلیڈو کے ساتھ ہم آہنگ ہونا ممکن نہیں ہے ، جبکہ آئی او ایس پر یہ ممکن ہے: وہی شناخت کنندگان کو تسلیم نہیں کیا جاتا ہے۔.
لہذا یہ میرے لئے غیر ضروری ہوجاتا ہے … اور اپیگو کی مدد سے میری درخواست کا جواب فراہم کرنے میں جلدی نہیں ہوتی ہے۔. یہ نوٹ کرنا ہمیشہ ناخوشگوار ہوتا ہے کہ کسٹمر کا تصور ہر دن اپنی قدر سے تھوڑا سا کھو دیتا ہے.

پیسا ڈی

اس تازہ کاری کے بعد سے میں نے اپنی تمام فہرستیں 12 کی تعداد میں کھو چکی ہوں اور جس کے ساتھ میں روزانہ پیشہ ورانہ انداز میں کام کرتا ہوں. میں مستقل طور پر لگ بھگ 200 مقامات کا انتظام کرتا ہوں ، اس اپ ڈیٹ نے آزمائش کے زمینی مہینوں کو پیش کیا ہے ! فہرست میں منظم تمام کاموں نے خود کو ایک ہی عالمی فہرست میں گروپ کیا ہے. یہ یقینی طور پر یہ بگ نہیں ہے جو مجھے اس سافٹ ویئر کے پیشہ ور افراد کو یہ کہتے ہوئے ورژن میں پہنچائے گا کہ بصورت دیگر عمدہ. میں کبھی بھی اسیر نہیں رہوں گا. آج شام ای میل کے ذریعہ رابطہ کرنے والے تعاون کے جواب کا انتظار کرنا میرے لئے باقی ہے یا پھر اس شاندار سافٹ ویئر کا پرانا ورژن تلاش کریں۔. میں واقعتا hope امید کرتا ہوں کہ یہ نئے ورژن کا جوانی کا بیگ ہے نہ کہ پچھلے ورژن کے ساتھ پہلے ہی حاصل کردہ افادیت کو تلاش کرنے کے لئے ادا شدہ پرو ورژن میں ہجرت کرنے پر مجبور کرنے کی حکمت عملی نہیں ہے۔. معلومات کے لئے میری مطابقت پذیری ڈراپ باکس کے ساتھ کی جاتی ہے

سورلپوائنٹ ، 12/13/2011

سنکرو اب نکل ہے

میں نے ہم آہنگی سے پہلے پکڑ لیا جو سست تھا ، بری طرح سے چلتا تھا ، وغیرہ۔. لیکن اب آئی کلاؤڈ کے ساتھ ، یہ میرے لئے بالکل مناسب ہے.

کچھ ممکنہ بہتری: مزید ڈسپلے کی ترتیبات.
– صرف وہی ظاہر کرنے کے لئے جو صارف استعمال کرتا ہے. مثال کے طور پر میں سیاق و سباق یا لیبل استعمال نہیں کرتا (کسی بھی معاملے میں ابھی نہیں) اور میں ان اختیارات کو مزید ظاہر نہیں کرنا چاہتا ہوں جو میرے ٹوڈو کو “آلودہ” کرتے ہیں۔. میں اپنے روزمرہ کے نوٹوں کے لئے صرف “تاریخ / ترجیحی / فہرست / قسم / قسم” رکھنا چاہتا ہوں اور ان اختیارات کے لئے دائیں کلک کریں جو میں شاذ و نادر ہی استعمال کرتا ہوں
– اور اس کے برعکس میں ایک ڈراپ ڈاون مینو کے مقابلے میں ایک سادہ PLSU ڈسپلے چاہوں گا تاکہ تاریخ ، ترجیح ، فہرست کا انتخاب کیا جاسکے ، … اگر میرے پاس صرف تین فہرستیں ہیں ، تو تین بٹنوں کو ظاہر کرنے کے لئے کافی ہوگا ، اور میں اپنی فہرست کا انتخاب کرسکتا ہوں۔ ڈراپ ڈاون مینو پر کلک کرنے کے بجائے ایک کلک کے ساتھ ، نام تلاش کریں ، اور اس پر کلک کریں. (ترجیح کے لئے ڈٹٹو ، خاص طور پر یہ کہ ہم ٹوڈو کی فہرست میں ایک بہت ہی بصری ڈرائنگ سے اختیارات میں نام کے انتخاب تک جاتے ہیں جو قدرتی نہیں ہے.

یہ ایرگونومکس کی تفصیلات ہیں. مجھے ٹوڈو کی سادگی اور کارکردگی پسند ہے ، لہذا میں چاہوں گا کہ اس سے بھی آسان ہونا اور بھی آسان ہوسکتا ہے.

رازداری کی ایپ

ڈویلپر ، اپیگو ، نے ایپل کو اپنے نجی طریقوں اور ڈیٹا کو سنبھالنے کے بارے میں تفصیلات فراہم نہیں کیں. مزید معلومات کے لئے ، ترقی کی رازداری کی پالیسی دیکھیں.

ماڈل ویو فن تعمیر
خیالات میں ڈیٹا کی نمائش کے لئے کیو ٹی کا ایم وی سی نما انٹرفیس

جب آپ PYQT5 کے ساتھ مزید پیچیدہ ایپلی کیشنز تیار کرنا شروع کردیں گے تو آپ اپنے ڈیٹا کے ساتھ مطابقت پذیری میں ویجٹ کو برقرار رکھنے کا امکان رکھتے ہیں. ویجٹ میں ذخیرہ شدہ ڈیٹا (ای.جی. ایک سادہ Qlistwidget) آسانی سے ازگر سے جوڑ توڑ کے لئے دستیاب نہیں ہے – تبدیلیوں کے ل an آپ کو آئٹم حاصل کرنے ، ڈیٹا حاصل کرنے ، اور پھر اسے واپس سیٹ کرنے کی ضرورت ہوتی ہے۔. اس کا پہلے سے طے شدہ حل یہ ہے کہ بیرونی اعداد و شمار کی نمائندگی کو ازگر میں رکھیں ، اور پھر اعداد و شمار اور ویجیٹ دونوں میں تازہ کاری کی تازہ کاری کریں ، یا اعداد و شمار سے ویہول ویجیٹ کو آسانی سے دوبارہ لکھیں۔. یہ تیزی سے بدصورت ہوسکتا ہے ، اور اس کے نتیجے میں بہت سارے بوائلرپلیٹ صرف اعداد و شمار کو تیز کرنے کے ل. ہوتے ہیں.

شکر ہے کہ کیو ٹی کے پاس اس کے لئے ایک حل ہے – ماڈل ویو. ماڈل ویو معیاری ڈسپلے ویجٹ کا ایک طاقتور متبادل ہیں ، جو اعداد و شمار کے ذرائع کے ساتھ بات چیت کرنے کے لئے باقاعدہ ماڈل انٹرفیس کا استعمال کرتے ہیں – آسان ڈیٹا ڈھانچے سے لے کر بیرونی ڈیٹا بیس تک. اس سے آپ کے اعداد و شمار کو الگ تھلگ کردیا جاتا ہے ، اور اسے اپنی پسند کے کسی ڈھانچے میں رکھنے کی اجازت دیتا ہے ، جبکہ یہ نظریہ پیش کش اور تازہ کاریوں کا خیال رکھتا ہے.

اس ٹیوٹوریل میں کیو ٹی کے ماڈل ویو فن تعمیر کے کلیدی پہلوؤں کو متعارف کرایا گیا ہے اور اسے PYQT5 میں سادہ ڈیسک ٹاپ ٹوڈو ایپلی کیشن بنانے کے لئے استعمال کرتا ہے۔.

ماڈل ویو کنٹرولر

ماڈل – دیکھیں – کنٹرولر (ایم وی سی) ترقیاتی صارف انٹرفیس کے لئے ایک آرکیٹیکچرل پیٹرن کا استعمال ہے جو کسی ایپلی کیشن کو تین باہم مربوط حصوں میں تقسیم کرتا ہے. یہ اعداد و شمار کی داخلی نمائندگی کو الگ کرتا ہے اس سے کہ صارف سے معلومات کو کس طرح پیش کیا جاتا ہے اور قبول کیا جاتا ہے.

ایم وی سی ڈیزائن پیٹن نے تین بڑے اجزاء کو فیٹس کیا۔

  • ماڈل ڈیٹا کا ڈھانچہ رکھتا ہے جس کے ساتھ ایپ کام کر رہی ہے.
  • دیکھیں جیسا کہ صارف کو دکھایا گیا ہے معلومات کی کوئی نمائندگی ہے ، جہاں گرافیکل یا ٹیبل. ایک ہی ڈیٹا ماڈل کے متعدد آراء کی اجازت ہے.
  • اختیار صارف سے ان پٹ قبول کرتا ہے ، اسے ماڈل یا دیکھنے کے لئے کمانڈز میں تبدیل کرتا ہے.

یہ Qt quide اور کنٹرولر کے مابین فرق تھوڑا سا پیچیدہ ہوجاتا ہے. کیو ٹی صارف (OS کے توسط سے) سے ان پٹ ایونٹس کو قبول کرتا ہے اور ان کو ہینڈل کرنے کے لئے ویجٹ (کنٹرولر) میں تفویض کرتا ہے. تاہم ، ویجٹ موجودہ حالت کی پیش کش کو صارف کو بھی سنبھالتے ہیں ، اور انہیں نظریہ میں ڈال دیتے ہیں۔. لائن کو کہاں کھینچنا ہے اس پر اذیت دینے کے بجائے ، QT-S-spek میں نظارہ اور کنٹرولر نے سادگی کی خاطر ماڈل/ویو کنٹرولر آرکیٹیکچر کالڈ “ماڈل ویو” کو ٹوگل کیا ہے۔.

اہم بات یہ ہے کہ اس کے درمیان فرق ڈیٹا اور یہ کس طرح پیش کیا جاتا ہے محفوظ ہے.

ماڈل ویو

ماڈل ڈیٹا اسٹور اور ویو کنٹرولر کے مابین انٹرفیس کے طور پر کام کرتا ہے. ماڈل ڈیٹا (یا اس کا حوالہ) رکھتا ہے اور اس ڈیٹا کو ایک معیاری API کے ذریعے پیش کرتا ہے جو نظریات استعمال کرتا ہے اور صارف کے سامنے پیش کرتا ہے. متعدد آراء ایک ہی ڈیٹا کو شیئر کرسکتے ہیں ، اسے مکمل طور پر مختلف طریقوں سے پیش کرتے ہیں.

آپ اپنے ماڈل کے لئے کوئی بھی “ڈیٹا اسٹور” استعمال کرسکتے ہیں ، مثال کے طور پر ایک معیاری ازگر کی فہرست یا لغت ، یا ڈیٹا بیس (ای کے ذریعے ای.جی. sqlalchymy) – یہ آپ پر منحصر ہے.

دونوں حصے بنیادی طور پر ذمہ دار ہیں –

  1. چائے ماڈل ڈیٹا کو اسٹور کرتا ہے ، یا اس کا حوالہ دیتا ہے اور انفرادی یا ریکارڈوں کی حدود کو واپس کرتا ہے ، اور اس سے وابستہ میٹا ڈیٹا یا ڈسپلے ہدایات.
  2. چائے دیکھیں ماڈل سے ڈیٹا کی درخواست کرتا ہے اور دکھاتا ہے کہ ویجیٹ پر کیا واپس کیا جاتا ہے.

دستاویزات میں کیو ٹی فن تعمیر کی گہرائی سے بحث ہے.

پائی اسٹالر کے ساتھ پائیتھن جی یو آئی کی ایپلی کیشنز کے لئے مکمل گائیڈ.

پائی اسٹالر کے ساتھ پیکیجنگ ازگر کی ایپلی کیشنز

[[ڈسکاؤنٹ.ڈسکاؤنٹ_پی سی]]] اگلے [رعایت کے لئے ٪.دورانیہ]] [رعایت.تفصیل]] کوڈ کے ساتھ [ڈسکاؤنٹ.کوپن کوڈ]]

خریداری کی طاقت برابری

[[ملک]] میں ڈویلپرز [[رعایت.ڈسکاؤنٹ_پی سی]]] کوڈ [ڈسکاؤنٹ کے ساتھ تمام کتابوں اور کورسز پر بند.کوپن کوڈ]]

ایک سادہ ماڈل ویو – ایک ٹوڈو لسٹ

عملی طور پر ماڈل ویو کو کس طرح استعمال کرنے کا مظاہرہ کرنے کے ل. ، ہم ایک ڈیسک ٹاپ ٹوڈو لسٹ کا ایک بہت ہی آسان عمل درآمد کریں گے۔. اس میں آئٹمز کی فہرست کے لئے QlistView ، نئی اشیاء داخل کرنے کے لئے ایک Qlineedit ، اور شامل کرنے ، حذف کرنے یا نشان زد کرنے کے لئے بٹنوں کا ایک سیٹ شامل ہوگا۔.

UI

سادہ UI بدصورت QT تخلیق کار تھا اور مین ونڈو کے طور پر محفوظ کیا گیا تھا.ui . چائے .UI فائل اور دوسرے تمام حصے نیچے ڈاؤن لوڈ کیے جاسکتے ہیں.

کیو ٹی تخلیق کار میں ایک سادہ ٹوڈو ایپ کو ڈیزائن کرنا

کیو ٹی تخلیق کار میں ایک سادہ ٹوڈو ایپ کو ڈیزائن کرنا

چلانے والی ایپ نیچے دکھائی گئی ہے.

چلانے والا ٹوڈو جی یو آئی (ابھی تک کچھ نہیں کام کرتا ہے)

چلانے والا ٹوڈو جی یو آئی (ابھی تک کچھ نہیں کام کرتا ہے)

انٹرفیس میں دستیاب ویجٹ ہم نے ذیل میں جدول میں دکھائے گئے IDs دیئے ہیں.

Objeuch قسم تفصیل
todview QlistView موجودہ ٹوڈوس کی فہرست
ٹوڈوڈٹ Qlineedit نیا ٹوڈو آئٹم بنانے کے لئے متن ان پٹ
ایڈبٹن کیپش بٹن نیا ٹوڈو بنائیں ، اسے ٹوڈوس کی فہرست میں شامل کریں
ڈیلیٹ بٹن کیپش بٹن موجودہ منتخب کردہ ٹوڈو کو حذف کریں ، اسے ٹوڈوس کی فہرست سے ہٹا دیں
مکمل بٹن کیپش بٹن موجودہ منتخب کردہ ٹوڈو کو نشان زد کریں

ہم ان شناخت کاروں کو بعد میں درخواست کی منطق کو جوڑنے کے لئے استعمال کریں گے.

نمونہ

ہم عمل درآمد سے ذیلی طبقے کے ذریعہ اپنے کسٹم ماڈل کی وضاحت کرتے ہیں ، جس سے ہمیں اپنے ماڈل سے منفرد حصوں پر توجہ مرکوز کرنے کی اجازت ملتی ہے۔. کیو ٹی متعدد مختلف ماڈل اڈوں کو فراہم کرتا ہے ، بشمول فہرستیں ، درخت اور میزیں (اسپریڈشیٹ کے لئے مثالی).

اس مثال کے طور پر ہم نتیجہ کو QlistView میں ظاہر کررہے ہیں . اس کے لئے مماثل بیس ماڈل قیبسٹرک لسٹ موڈل ہے . ہمارے ماڈل کی خاکہ تعریف ذیل میں دکھائی گئی ہے.

کلاس ٹڈوموڈیل (کیو ٹی کور.QabstractListModel): Def __init __ (خود ، *آرگس ، ٹوڈوس = کوئی نہیں ، ** Kwargs): سپر (ٹوموڈل ، خود).__init __ (*آرگس ، ** Kwargs) خود.ٹوڈوس = ٹوڈوس یا [] ڈیف ڈیٹا (خود ، انڈیکس ، کردار): اگر کردار == ​​QT.ڈسپلے رول: # ڈیٹا ڈھانچے کے لئے نیچے ملاحظہ کریں. حیثیت ، متن = خود.ٹوڈوس [انڈیکس.قطار ()] # صرف ٹوڈو متن واپس کریں. لوٹ ٹیکسٹ ڈیف راؤکونٹ (خود ، انڈیکس): لوٹ لین (خود).ٹوڈوس) 

چائے .ٹوڈوس متغیر ہمارا ڈیٹا اسٹور ہے اور دو طریقے راؤ کاؤنٹ () اور ڈیٹا () معیاری ماڈل کے طریقے ہیں جو ہمیں لسٹ ماڈل کے لئے لازمی ہیں۔. ہم نیچے ان سے گزریں گے.

.ٹوڈوس کی فہرست

ہمارے ماڈل کے لئے ڈیٹا اسٹور ہے .ٹوڈوس ، ایک سادہ ازگر کی فہرست جس میں ہم اقدار کے ایک ٹپل کو فارمیٹ [(بول ، ایس ٹی آر) ، (بول ، ایس ٹی آر) ، (بول ، ایس ٹی آر) میں محفوظ کریں گے جہاں بول ہے لہذا دیئے گئے اندراج کی حالت ، اور ایس ٹی آر ٹوڈو کا متن ہے.

ہم خود کو شروع کرتے ہیں.ٹوڈو اسٹارٹ اپ پر خالی فہرست میں ، جب تک کہ ٹوڈوس کی ورڈ دلیل کے ذریعہ کوئی فہرست پاس نہ ہوجائے.

خود.ٹوڈوس = ٹوڈوس یا [] خود کو مقرر کرے گا.ٹوڈوس کو فراہم کردہ ٹوڈوس ویلیو کو اگر یہ ہے truty (میں.ای. خالی فہرست کے علاوہ کوئی اور چیز ، بولین جھوٹی یا کوئی بھی پہلے سے طے شدہ قیمت نہیں) ، بصورت دیگر اسے خالی فہرست میں مقرر کیا جائے گا [] .

اس ماڈل کا انسداد بنانے کے ل we ہم آسان کر سکتے ہیں۔

ماڈل = ٹوموڈیل () # خالی ٹوڈو لسٹ بنائیں 

یا موجودہ فہرست میں گزرنے کے لئے –

ٹوڈوس = [(غلط ، 'ایک شے') ، (غلط ، 'کوئی اور شے')] ماڈل = ٹوموڈیل (ٹوڈوس) 

.راؤکاؤنٹ ()

چائے .موجودہ اعداد و شمار میں قطاروں کی تعداد حاصل کرنے کے لئے راؤکاؤنٹ () کا طریقہ ویو کے ذریعہ کالاڈ ہے. اس نظارے کے لئے یہ ضروری ہے کہ اب زیادہ سے زیادہ انڈیکس یہ ڈیٹا اسٹور کو دوبارہ کرسکتا ہے (قطار گنتی 1). فروخت ہم اپنے ڈیٹا اسٹور کے بطور ایک ازگر کی فہرست استعمال کرتے ہیں ، اس کی واپسی کی قیمت صرف فہرست کی لین () ہے.

.ڈیٹا ()

یہ آپ کے ماڈل کا بنیادی مرکز ہے ، جو نظارے سے ڈیٹا کی درخواستوں کو سنبھالتا ہے اور مناسب نتیجہ واپس کرتا ہے. یہ دو پیرامیٹرز انڈیکس اور کردار حاصل کرتا ہے.

انڈیکس اعداد و شمار کی پوزیشن/کوآرڈینیٹ ہے جس کی درخواست کی درخواست کی جارہی ہے ، جو دو طریقوں سے قابل رسائی ہے .قطار () اور .کالم () جو ہر جہت میں پوزیشن دیتا ہے.

ہمارے QlistView کے لئے کالم ہمیشہ 0 ہوتا ہے اور اسے نظرانداز کیا جاسکتا ہے ، لیکن آپ کو اسپریڈشیٹ ویو میں 2D ڈیٹا کے لئے اسے استعمال کرنے کی ضرورت ہوگی.

کردار ایک جھنڈا ہے جو اس کی نشاندہی کرتا ہے قسم اعداد و شمار کا نظارہ درخواست کر رہا ہے. اس کی وجہ یہ ہے کہ .ڈیٹا () کے طریقہ کار کی اصل میں بنیادی اعداد و شمار سے زیادہ ذمہ داری عائد ہوتی ہے. یہ اسٹائل کی معلومات ، ٹول ٹپس ، اسٹیٹس بارز ، وغیرہ کے لئے درخواستوں کو بھی سنبھالتا ہے۔. – بنیادی طور پر کوئی بھی چیز جو خود ڈیٹا کے ذریعہ آگاہ کی جاسکتی ہے.

QT کا نام.ڈسپلے رول قدرے عجیب ہے ، لیکن اس سے یہ ظاہر ہوتا ہے کہ دیکھیں ہم سے پوچھ رہا ہے “براہ کرم مجھے ڈسپلے کے لئے ڈیٹا دیں”. اور بھی ہیں کردار اسٹائل کی درخواستوں یا ڈیٹا کی درخواست کرنے کے لئے ڈیٹا کو “ترمیم کے لئے تیار” فارمیٹ میں جو ڈیٹا وصول کرسکتا ہے.

کردار قدر تفصیل
Qt.ڈسپلے 0 متن کی شکل میں کلیدی اعداد و شمار کو پیش کیا جائے گا. (Qstring)
Qt.سجاوٹ رول 1 اعداد و شمار کو آئیکن کی شکل میں سجاوٹ کے طور پر پیش کیا جائے گا. (کیو کلور ، کیون یا کیو پی آئی ایکس میپ)
Qt.ادارتی 2 ایڈیٹر میں ترمیم کے لئے باضابطہ پیروی میں ڈیٹا. (Qstring)
Qt.ٹول ٹپرول 3 آئٹم کے ٹول ٹائپ میں ظاہر کردہ ڈیٹا. (Qstring)
Qt.stutustiprole 4 اسٹیٹس بار میں ظاہر کردہ ڈیٹا. (Qstring)
Qt.whatsthisrole 5 “یہ کیا ہے” میں آئٹم کے لئے ظاہر کردہ ڈیٹا?”فیشن. (Qstring)
Qt.sizehintrole 13 اس شے کا سائز اشارہ جو نظاروں کو فراہم کیا جائے گا. (Qsize)

دستیاب کی مکمل فہرست کے لئے کردار کہ آپ کو QT itmdatarole دستاویزات دیکھیں. ہماری ٹوڈو لسٹ صرف کیو ٹی کا استعمال کرے گی.ڈسپلے رول اور کیو ٹی.سجاوٹ رول .

بنیادی عمل درآمد

ذیل میں UI کو لوڈ کرنے اور اسے ظاہر کرنے کے لئے بنیادی اسٹب ایپلی کیشن کی ضرورت ہے. ہم اس اڈے میں اپنا ماڈل کوڈ اور ایپلی کیشن منطق شامل کریں گے.

PYQT5 سے SYS درآمد کریں.Qtcore درآمد qt_creator_file = "مین ونڈو.UI "UI_MAINWINDOW ، QTBASECLASS = UIC.لوڈوڈیوائپ (QT_CREATOR_FILE) کلاس ٹڈوموڈیل (QTCORE.QabstractListModel): Def __init __ (خود ، *آرگس ، ٹوڈوس = کوئی نہیں ، ** Kwargs): سپر (ٹوموڈل ، خود).__init __ (*آرگس ، ** Kwargs) خود.ٹوڈوس = ٹوڈوس یا [] ڈیف ڈیٹا (خود ، انڈیکس ، کردار): اگر کردار == ​​QT.ڈسپلے رول: حیثیت ، متن = خود.ٹوڈوس [انڈیکس.قطار ()] واپسی ٹیکسٹ ڈیف راؤ کاؤنٹ (خود ، انڈیکس): ریٹرن لین (خود).ٹوڈوس) کلاس مین ونڈو (Qtwidgets.QMAINWINDOW ، UI_MAINWINDOW): DEF __init __ (خود): QTWidgets.Qumainwindow.__init __ (خود) ui_mainwindow.__init __ (خود) خود.setupui (خود) خود.ماڈل = ٹوموڈیل () خود.todview.سیٹ ماڈل (خود).ماڈل) ایپ = Qtwidgets.Qapplication (sys.آرگ وی) ونڈو = مین ونڈو () ونڈو.شو () ایپ.exc_ () 

ہم پہلے کی طرح اپنے ٹڈوموڈیل کی وضاحت کرتے ہیں ، اور مین ونڈو آبجیکٹ کو شروع کرتے ہیں. مین ونڈو کے لئے __init__ میں ہم اپنے ٹوڈو ماڈل کی ایک مثال بناتے ہیں اور اس ماڈل کو ٹوڈو_ویو پر مرتب کرتے ہیں۔ . اس فائل کو ٹوڈو کے طور پر محفوظ کریں.py اور اس کے ساتھ چلائیں –

ازگر 3 ٹوڈو.رفتار 

اگرچہ ابھی دیکھنے کے لئے بہت کچھ نہیں ہے ، لیکن QlistView اور ہمارا ماڈل دراصل کام کر رہا ہے – اگر آپ کچھ ڈیفالٹ ڈیٹا شامل کرتے ہیں تو آپ دیکھیں گے کہ اسے فہرست میں ظاہر کیا جائے گا۔.

خود.ماڈل = ٹڈوموڈیل (ٹوڈوس = [(غلط ، 'میرا پہلا ٹوڈو'))))))))))) 

QlistView سخت کوڈڈ ٹوڈو آئٹم کو دکھا رہا ہے

QlistView سخت کوڈڈ ٹوڈو آئٹم کو دکھا رہا ہے

آپ اس طرح کی اشیاء کو دستی طور پر شامل کرتے رہ سکتے ہیں اور وہ QlistView میں ترتیب میں دکھائیں گے . اگلا ہم درخواست کے اندر سے آئی ٹی ایم شامل کرنا ممکن بنائیں گے.

پہلے ایڈ نامی مین ونڈو پر ایک نیا طریقہ بنائیں . یہ ہمارا کال بیک ہے جو ان پٹ سے موجودہ متن کو نئے ٹوڈو کے طور پر شامل کرنے کا خیال رکھے گا. اس طریقہ کو ایڈ بٹن سے مربوط کریں.__init__ بلاک کے آخر میں دبائے ہوئے سگنل.

کلاس مین ونڈو (Qtwidgets.QMAINWINDOW ، UI_MAINWINDOW): DEF __init __ (خود): QTWidgets.Qumainwindow.__init __ (خود) ui_mainwindow.__init __ (خود) خود.setupui (خود) خود.ماڈل = ٹوموڈیل () خود.todview.سیٹ ماڈل (خود).ماڈل) # بٹن کو جوڑیں. خود.ایڈبٹن.پریس.جڑیں (خود).شامل کریں) ڈیف شامل کریں (خود): "" QLINEEDIT سے متن حاصل کرتے ہوئے ، ہماری ٹوڈو لسٹ میں کسی شے کو شامل کریں .todoedit اور وہاں اسے صاف کرنا. "" "متن = خود.ٹوڈوڈٹ.متن () اگر متن: # خالی ڈور شامل نہ کریں. # ماڈل کے ذریعہ فہرست تک رسائی حاصل کریں. خود.ماڈل.ٹوڈوس.ضمیمہ ((غلط ، متن)) # ٹرگر ریفریش. خود.ماڈل.لے آؤٹ چینج.emit () # ان پٹ خود کو خالی کریں.ٹوڈوڈٹ.سیٹ ٹیکسٹ ("") 

شامل بلاک میں نوٹس لائن سیلف.ماڈل.لے آؤٹ چینج.emit () . یہاں ہم ایک ماڈل سگنل خارج کر رہے ہیں .نظارے کو بتانے کے لئے لے آؤٹ چینج کیا شکل اعداد و شمار میں ردوبدل کیا گیا ہے. یہ نظارے کے ہستی کی تازہ کاری کو متحرک کرتا ہے. اگر آپ اس لائن کو چھوڑ دیتے ہیں تو ، ٹوڈو کو پھر بھی شامل کیا جائے گا لیکن QlistView اپ ڈیٹ نہیں ہوگا.

اگر صرف اعداد و شمار میں ردوبدل کیا گیا ہے ، لیکن قطار/کالموں کی تعداد متاثر نہیں ہے آپ استعمال کرسکتے ہیں .اس کے بجائے ڈیٹاچینجڈ () سگنل. اس سے اعداد و شمار میں ایک تبدیل شدہ خطے کی بھی وضاحت ہوتی ہے جو پورے نقطہ نظر کو دوبارہ بنانے سے بچنے کے لئے اوپر بائیں اور نیچے دائیں کرایہ کا استعمال کرتے ہیں۔.

دوسرے اعمال کو جکڑ رہا ہے

اب ہم بٹن کے باقی سگنل کو مربوط کرسکتے ہیں اور کارکردگی کے لئے امدادی شامل کرسکتے ہیں حذف کریں اور مکمل آپریشنز. ہم پہلے کی طرح __init__ بلاک میں بٹن سگنل شامل کرتے ہیں.

 خود.ایڈبٹن.پریس.جڑیں (خود).شامل کریں) خود.ڈیلیٹ بٹن.پریس.جڑیں (خود).حذف کریں) خود.مکمل بٹن.پریس.جڑیں (خود).مکمل) 

پھر مندرجہ ذیل کے طور پر ایک نیا حذف کرنے کے طریقہ کار کی وضاحت کریں۔

 ڈیف ڈیلیٹ (خود): اشاریہ = خود.todview.منتخب کردہ ڈنڈیکس () اگر اشاریہ جات: # انڈیکس سنگل سلیکٹ میں ایک ہی شے کی فہرست ہے. اشاریہ = اشاریہ [0] # آئٹم کو ہٹا دیں اور ریفریش کریں. ڈیل سیلف.ماڈل.ٹوڈوس [انڈیکس.قطار ()] خود.ماڈل.لے آؤٹ چینج.emit () # انتخاب کو صاف کریں (کیونکہ یہ کوئی طویل درست نہیں ہے). خود.todview.کلیریلیکشن () 

ہم خود استعمال کرتے ہیں.todview.اشاریہ جات حاصل کرنے کے لئے منتخب کردہ ڈنڈیکس (دراصل کسی ایک شے کی فہرست ، جیسا کہ ہم سنگل سلیکشن موڈ میں ہیں) اور پھر .قطار () ہمارے ماڈل پر ہمارے ٹوڈو کی فہرست میں انڈیکس کے طور پر. ہم ازگر کے ڈیل آپریٹر کا استعمال کرتے ہوئے انڈیکسڈ آئٹم کو حذف کرتے ہیں ، اور پھر ایک لے آؤٹ چینج سگنل کو متحرک کرتے ہیں کیونکہ اعداد و شمار کی شکل میں ترمیم کی گئی ہے۔.

فائنل سے ، ہم فعال انتخاب کو صاف کرتے ہیں کیونکہ اس سے متعلق آئٹم جو اب کی حد سے باہر ہے (اگر آپ نے آخری شے کا انتخاب کیا تھا).

آپ اس اسمارٹٹر کو بنانے کی کوشش کر سکتے ہیں ، اور اس کے بجائے فہرست میں آخری آئٹم منتخب کرسکتے ہیں

مکمل طریقہ اس طرح پسند کرتا ہے –

 ڈیف مکمل (خود): اشاریہ = خود.todview.منتخب شدہ انڈیکس () اگر اشاریہ: انڈیکس = انڈیکس [0] قطار = انڈیکس.قطار () حیثیت ، متن = خود.ماڈل.ٹوڈوس [قطار] خود.ماڈل.ٹوڈوس [قطار] = (سچ ، متن) # .ڈیٹاچینجڈ ٹاپ بائیں اور نیچے دائیں طرف لیتا ہے ، جو ایک ہی انتخاب کے لئے برابر # ہے. خود.ماڈل.ڈیٹاچینجڈ.emit (انڈیکس ، انڈیکس) # انتخاب کو صاف کریں (کیونکہ یہ کوئی طویل درست نہیں ہے). خود.todview.کلیریلیکشن () 

اس میں وہی اشاریہ سازی کا استعمال ہوتا ہے جیسے حذف کریں ، لیکن اس بار ہم ماڈل سے آئٹم لاتے ہیں .ٹوڈوس کی فہرست اور پھر حیثیت کو سچ کے ساتھ تبدیل کریں .

ہمیں یہ بازیافت اور تبدیلی کرنا ہے ، کیونکہ ہمارے ڈیٹا کو ازگر ٹیوپلس کے طور پر محفوظ کیا جاتا ہے جس میں ترمیم نہیں کی جاسکتی ہے۔.

یہاں کی کلید مختلف بمقابلہ ہے. معیاری کیو ٹی ویجٹ یہ ہے کہ ہم اپنے ڈیٹا میں براہ راست تبدیلی لاتے ہیں ، اور ہاسورڈ کو تبدیل کرنے والے کیو ٹی کو آسان طور پر مطلع کرنے کی ضرورت ہے – ویجیٹ ریاست کو اپ ڈیٹ کرنا خود بخود سنبھالا جاتا ہے۔.

QT کا استعمال کرتے ہوئے.سجاوٹ رول

اگر آپ اب ایپلی کیشن کو چلاتے ہیں تو آپ کو یہ معلوم کرنا چاہئے کہ دونوں کاموں کو شامل کرنا اور اسے حذف کرنا ، لیکن آئٹمز کو مکمل کرنے کے دوران کام کر رہا ہے تو ، نظریہ میں اس کا کوئی اشارہ نہیں ہے۔. جب کسی شے کے مکمل ہونے پر ظاہر کرنے کے لئے اشارے کے ساتھ نظریہ فراہم کرنے کے لئے ہمیں اپنے ماڈل کو اپ ڈیٹ کرنے کی ضرورت ہے. تازہ ترین ماڈل ذیل میں دکھایا گیا ہے.

ٹک = Qtgui.Qimage ('ٹک.png ') کلاس ٹڈوموڈیل (Qtcore.QabstractListModel): Def __init __ (خود ، *آرگس ، ٹوڈوس = کوئی نہیں ، ** Kwargs): سپر (ٹوموڈل ، خود).__init __ (*آرگس ، ** Kwargs) خود.ٹوڈوس = ٹوڈوس یا [] ڈیف ڈیٹا (خود ، انڈیکس ، کردار): اگر کردار == ​​QT.ڈسپلے رول: _ ، متن = خود.ٹوڈوس [انڈیکس.قطار ()] اگر رول == QT ہے تو متن واپس کریں.سجاوٹ رول: حیثیت ، _ = خود.ٹوڈوس [انڈیکس.قطار ()] اگر حیثیت: واپس ٹک ڈیف راؤ کاؤنٹ (خود ، انڈیکس): لوٹ لوٹ لین (خود).ٹوڈوس) 

ایک ٹک آئیکن ٹک استعمال کر رہے تھے.PNG مکمل آئٹمز کی نشاندہی کرنے کے لئے ، جسے ہم ایک Qimage آبجیکٹ میں لوڈ کرتے ہیں جس کا نام نشان ہے . ماڈل میں ہم نے کیو ٹی کے لئے ایک ہینڈلر نافذ کیا.ڈیکوریشن رول جو قطاروں کے لئے ٹک آئیکن واپس کرتا ہے جو کی حیثیت درست ہے (مکمل کے لئے).

میں جو آئیکن استعمال کر رہا ہوں وہ پی کے ذریعہ طے شدہ فیوگو سے لیا گیا ہے.یوسوکیمیامین

I icon کے intostad آپ رنگ پر بھی واپس جاسکتے ہیں ، ای.جی. Qtgui.کیو کلور (‘گرین’) جو ٹھوس مربع کے طور پر کھینچا جائے گا.

ایپ کو چلانا آپ کو اب آئٹمز کو مکمل طور پر نشان زد کرنے کے قابل ہونا چاہئے.

ٹوڈوس مکمل نشان لگا ہوا ہے

ٹوڈوس مکمل نشان لگا ہوا ہے

ایک مستقل ڈیٹا اسٹور

ہماری ٹوڈو ایپ اچھی طرح سے کام کرتی ہے ، لیکن اس میں ایک مہلک خامی ہے۔ جیسے ہی آپ درخواست بند کرتے ہیں آپ کے ٹوڈو کو بھول جاتے ہیں جبکہ یہ سوچتے ہوئے کہ آپ کو کچھ کرنا نہیں ہے جب آپ زین کے قلیل مدتی جذبات میں حصہ ڈال سکتے ہیں ، طویل مدتی یہ شاید ایک ہے۔ برا خیال.

حل یہ ہے کہ پریسڈ ڈیٹا اسٹور کے کچھ آؤٹ کو نافذ کیا جائے. آسان ترین نقطہ نظر ایک سادہ فائل اسٹور ہے ، جہاں ہم اسٹارٹ اپ میں JSON یا اچار کی فائل سے آئٹمز لوڈ کرتے ہیں ، اور تبدیلی پر واپس لکھتے ہیں۔.

ایسا کرنے کے ل we ہم اپنے ہاتھ پر دو نئے طریقوں کی وضاحت کرتے ہیں . یہ JSON فائل کے نام کے ڈیٹا سے لوڈ ڈیٹا.JSON (اگر یہ موجود ہے تو ، غلطی کو نظرانداز کرتے ہوئے اگر ایسا نہیں ہوتا ہے) خود سے.ماڈل.ٹوڈوس اور موجودہ خود کو لکھیں.ماڈل.ٹوڈوس بالترتیب ایک ہی فائل میں.

 ڈیف بوجھ (خود): کوشش کریں: کھلی ('ڈیٹا) کے ساتھ.json '،' r ') بطور f: خود.ماڈل.ٹوڈوس = JSON.لوڈ (f) استثناء استثناء: پاس ڈیف سیف (خود): کھلی ('ڈیٹا کے ساتھ).json '،' W ') بطور f: ڈیٹا = json.ڈمپ (خود).ماڈل.ٹوڈوس ، ایف) 

ڈیٹا میں تبدیلیوں کو برقرار رکھنے کے لئے ہمیں شامل کرنے کی ضرورت ہے .() ہینڈلر کو کسی بھی طریقہ کے اختتام پر محفوظ کریں جو ڈیٹا میں ترمیم کرتا ہے ، اور .ماڈل تخلیق کرنے کے بعد __init__ بلاک پر ہینڈلر ().

حتمی کوڈ اس طرح لگتا ہے –

PYQT5 سے JSON درآمد کریں JSON PYQTCORE ، QTGUI ، QTWidgets ، UIC PYQT5 سے UIC.Qtcore درآمد qt_creator_file = "مین ونڈو.UI "UI_MAINWINDOW ، QTBASECLASS = UIC.لوڈڈوسائپ (QT_CREATOR_FILE) ٹک = QTGUI.Qimage ('ٹک.png ') کلاس ٹڈوموڈیل (Qtcore.QabstractListModel): Def __init __ (خود ، *آرگس ، ٹوڈوس = کوئی نہیں ، ** Kwargs): سپر (ٹوموڈل ، خود).__init __ (*آرگس ، ** Kwargs) خود.ٹوڈوس = ٹوڈوس یا [] ڈیف ڈیٹا (خود ، انڈیکس ، کردار): اگر کردار == ​​QT.ڈسپلے رول: _ ، متن = خود.ٹوڈوس [انڈیکس.قطار ()] اگر رول == QT ہے تو متن واپس کریں.سجاوٹ رول: حیثیت ، _ = خود.ٹوڈوس [انڈیکس.قطار ()] اگر حیثیت: واپس ٹک ڈیف راؤ کاؤنٹ (خود ، انڈیکس): لوٹ لوٹ لین (خود).ٹوڈوس) کلاس مین ونڈو (Qtwidgets.QMAINWINDOW ، UI_MAINWINDOW): DEF __init __ (خود): سپر (مین ونڈو ، خود).__خود میں.setupui (خود) خود.ماڈل = ٹوموڈیل () خود.بوجھ () خود.todview.سیٹ ماڈل (خود).ماڈل) خود.ایڈبٹن.پریس.جڑیں (خود).شامل کریں) خود.ڈیلیٹ بٹن.پریس.جڑیں (خود).حذف کریں) خود.مکمل بٹن.پریس.جڑیں (خود).مکمل) ڈیف ایڈ (خود): "" "ہماری ٹوڈو لسٹ میں کسی شے کو شامل کریں ، کلایڈیٹ سے متن حاصل کریں .todoedit اور وہاں اسے صاف کرنا. "" "متن = خود.ٹوڈوڈٹ.متن () اگر متن: # خالی ڈور شامل نہ کریں. # ماڈل کے ذریعہ فہرست تک رسائی حاصل کریں. خود.ماڈل.ٹوڈوس.ضمیمہ ((غلط ، متن)) # ٹرگر ریفریش. خود.ماڈل.لے آؤٹ چینج.emit () # ان پٹ خود کو خالی کریں.ٹوڈوڈٹ.سیٹ ٹیکسٹ ("") خود.محفوظ کریں () ڈیف ڈیلیٹ (خود): اشاریہ = خود.todview.منتخب کردہ ڈنڈیکس () اگر اشاریہ جات: # انڈیکس سنگل سلیکٹ میں ایک ہی شے کی فہرست ہے. اشاریہ = اشاریہ [0] # آئٹم کو ہٹا دیں اور ریفریش کریں. ڈیل سیلف.ماڈل.ٹوڈوس [انڈیکس.قطار ()] خود.ماڈل.لے آؤٹ چینج.emit () # انتخاب کو صاف کریں (کیونکہ یہ کوئی طویل درست نہیں ہے). خود.todview.کلیریسیشن () خود.محفوظ کریں () ڈیف مکمل (خود): اشاریہ = خود.todview.منتخب شدہ انڈیکس () اگر اشاریہ: انڈیکس = انڈیکس [0] قطار = انڈیکس.قطار () حیثیت ، متن = خود.ماڈل.ٹوڈوس [قطار] خود.ماڈل.ٹوڈوس [قطار] = (سچ ، متن) # .ڈیٹاچینجڈ ٹاپ بائیں اور نیچے دائیں طرف لیتا ہے ، جو ایک ہی انتخاب کے لئے برابر # ہے. خود.ماڈل.ڈیٹاچینجڈ.emit (انڈیکس ، انڈیکس) # انتخاب کو صاف کریں (کیونکہ یہ کوئی طویل درست نہیں ہے). خود.todview.کلیریسیشن () خود.محفوظ کریں () ڈیف بوجھ (خود): کوشش کریں: کھلی ('ڈیٹا کے ساتھ).db '،' r ') بطور f: خود.ماڈل.ٹوڈوس = JSON.لوڈ (f) استثناء استثناء: پاس ڈیف سیف (خود): کھلی ('ڈیٹا کے ساتھ).db '،' w ') بطور f: ڈیٹا = json.ڈمپ (خود).ماڈل.ٹوڈوس ، ایف) ایپ = Qtwidgets.Qapplication (sys.آرگ وی) ونڈو = مین ونڈو () ونڈو.شو () ایپ.exc_ () 

اگر آپ کی درخواست میں موجود ڈیٹا میں بڑے یا زیادہ پیچیدہ ہونے کی صلاحیت موجود ہے تو ، آپ اسے ذخیرہ کرنے کے لئے ایک اصل ڈیٹا بیس استعمال کرنے کو ترجیح دے سکتے ہیں۔. اس معاملے میں ماڈل انٹرفیس کو ڈیٹا بیس پر لپیٹے گا اور ڈیٹا کو ظاہر کرنے کے لئے براہ راست استفسار کرے گا. آئندہ ٹیوٹوریل میں یہ کرنے کا طریقہ L’ll کا احاطہ کرتا ہے.

QlistView کی ایک اور دلچسپ مثال کے لئے یہ مثال میڈیا پلیئر کی ایپلی کیشن دیکھیں. یہ QT بلڈنگ QMediaplayList کو ڈیٹا اسٹور کے طور پر استعمال کرتا ہے ، جس میں مشمولات QlistView میں ظاہر ہوتے ہیں .

بی سی آر کے بارے میں.cx:

بی سی آر.سی ایکس ایک برازیلین ٹکنالوجی کا آغاز ہے ، جو دونوں بزنس آؤٹ سورسنگ پروسیسز (بی پی او) اور بزنس ماحولیات آؤٹ سورسنگ (بی ای او) دونوں میں مہارت رکھتا ہے ، بنیادی طور پر طلب پیدا کرنے ، کسٹمر کے تجربے ، مواصلات ، صارف کی مدد اور اطمینان پر مرکوز ہے۔.

تفصیل:

ٹوڈو ایپ کو کام کے دن کے دوران ایجنٹ کے نوٹوں کو ذخیرہ کرنے کے لئے ایک تیز ، محفوظ اور صارف دوست طریقہ کے طور پر تیار کیا گیا تھا۔.

ہر فرد کے ٹکٹ یا کسٹمر کی بنیاد پر اپنے اپنے کاموں کو بنانے اور ان کا نظم و نسق کرنے کے قابل ہو جائیں.

ٹریلس بنائیں اور اپنے ورک فلو کو اپنی مرضی کے مطابق بنائیں

پیداواری صلاحیت میں اضافہ! ٹوڈو ایپ کا استعمال کرتے ہوئے آپ تکرار کے عمل کو معیاری بنانے کے لئے اپنی مرضی کے مطابق ورک فلو تشکیل دے سکتے ہیں. ابھی کوشش کریں اور اپنی پیشرفت کو کنٹرول کرنا شروع کریں ، جیسے اپنے ٹوڈو اور ڈون.

حوالہ جات:

  1. ہر ٹکٹ کے لئے کام بنائیں
  2. ڈلیوری ایبل کی پیروی کرنے کے لئے پروگریس بار
  3. پیداوری کو بڑھانے کے لئے معیاری ورک فلو بنائیں.
  4. اپنی روز مرہ کے معمولات کو برقرار رکھنے کے لئے اپنی ٹاسک لسٹ کا نظم کریں.
  1. ایپ کی خصوصیات پر مکمل رسائی حاصل کرنے کے لئے دونوں ٹوڈو اور زینڈیسک سنشائن دونوں کو اسٹیک کریں
  2. ٹاسکس آٹومیشنز کو تخلیق یا ترمیم کرکے پیداواری صلاحیت کو بہتر بنائیں ، اور اپنی ذاتی نوعیت کی پیش کش کو بچائیں.