قمت مؤخرا بالبحث عن طريقة يمكن من خلالها نقل مجموعة من العناصر التي تم تحديدها من طرف المستخدم من قائمة إلى أخرى.
فكانت النتيجة على شكل البرنامج التالي :
يمكن تحميل الشفرة المصدرية من هنا.
#!/usr/bin/env python # -*- coding: utf-8 -*- ## جزء خاص بتحديد الرخصة و حق الملكية ## Copyright (c) 2009 Mohammed Berdai stuntgp2000@gmail.com ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## إيستدعاء للوحدات التي نحتاجها import sys from PyQt4 import QtGui, QtCore, uic ## إنشاء البرنامج على شكل قسم يشتق من الكائن (كيو ويدجت)ـ class pylist(QtGui.QWidget): ## دالة بدء التشغيل def __init__(self, parent=None): ## تهيئة الكائن الأساسي و الواجهة الرسومية QtGui.QWidget.__init__(self, parent) uic.loadUi("main.ui", self) ## نداء على الدالة لتقوم بملء القائمة الأولى self.FillList() ## ربط حدث الضغط على كل زر بالدالة التي ستثمثل وظيفته self.connect(self.pbAdd, QtCore.SIGNAL("clicked()"), self.AddItem) self.connect(self.pbCount, QtCore.SIGNAL("clicked()"), self.Counter) self.connect(self.pbFill, QtCore.SIGNAL("clicked()"), self.FillList) self.connect(self.pbRemove, QtCore.SIGNAL("clicked()"), self.RemoveItem) self.connect(self.pbMove, QtCore.SIGNAL("clicked()"), self.MoveItem) self.connect(self.pbMoveSel, QtCore.SIGNAL("clicked()"), self.MoveSelItems) ## تقوم بنقل المحتوى النصي من إطار الكتابة إلى القائمة def AddItem(self): if self.lnEntry.text() <> "": s = self.lnEntry.text() self.List1.addItem(s) self.lnEntry.setText("") ## إظهار رسالة بعدد العناصر في كل قائمة def Counter(self): msg1 = "List one contains " + str(self.List1.count()) + " item(s)" + "\n" msg2 = "List Two contains " + str(self.List2.count()) + " item(s)" QtGui.QMessageBox.information(self, 'List Count', msg1 + msg2 , QtGui.QMessageBox.Ok) ## ملء القائمة ب10 عناصر عددية لتسهيل إختبار البرنامج def FillList(self): for x in range(10): self.List1.addItem(str(x)) ## حدف العنصر الذي تم إختياره def RemoveItem(self): self.List1.takeItem(self.List1.currentRow()) ## نسخ العنصر من القائمة الأولى إلى الثانية ثم حدفه من القائمة الأولى def MoveItem(self): self.List2.addItem(self.List1.currentItem().text()) self.List1.takeItem(self.List1.currentRow()) ## نسخ كل العناصر المحددة من القائمة الأولى إلى الثانية def MoveSelItems(self): ## بإستخدامة الائحة المعبرة عن ترتيب كل عنصر محدد في القائمة الأولى يمكن إستخدام الحلقة لنسخ العناصر while self.List1.selectedIndexes() <> []: x = self.List1.selectedIndexes()[0].row() self.List2.addItem(self.List1.item(x).text()) self.List1.takeItem(x) ## هنا مذخل بداية البرنامج حيث يتم توظيف القسم و عرض الواجهة الرسومية if __name__ == "__main__": app = QtGui.QApplication(sys.argv) mw = pylist() mw.show() sys.exit(app.exec_())
ليست هناك تعليقات:
إرسال تعليق