الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية تحويل نتائج الدوال من ويدجت الى ويدجت في كلاسات Pyqt

بدأه ubuntu-pro في 15 فبراير 2009 · 7 رد · 2,105 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمتة الله تعالى وبركاتة

اعذروني على عنوان الموضوع المعقد

انا عندي برنامج بحث صغير بضغظة زر يتم البحث في قاعدة بيانات مبنية على الس كيو ال لايت (sqlite)

البرنامج يشتغل على الترمنل الحمدلله تمام لكن في الواجهه المصممة بالكيوتي كيف اقدر اوجة نتائج البرنامج من lineedit الى listviewitem

يعني بمجرد الصغط على زر بحث نتائج البحث بتكون ظاهرة على listview widget

كيف بيكون شكل كتابة الكلاس في البرنامج طبعا هذي صور توضيخية لاستفساري مع الكود

post-176755-1234678630_thumb.png

import sys
import os
from search import Ui_MainWindow as UIMW
from PyQt4 import QtCore, QtGui
import urllib2 as ulib
import sqlite3
from pysqlite2 import dbapi2 as sqlite3

def globalF():
	connection = sqlite3.connect('Photos.db')
		memoryConnection = sqlite3.connect(':memory:')
		cursor = connection.cursor()
	cursor.execute('SELECT * FROM photos where Tag = "Tag"')
		print cursor.fetchall()

class MainWindow (QtGui.QMainWindow, UIMW):

	def __init__(self):
		QtGui.QMainWindow.__init__(self)
		self.setupUi(self)
		self.__setupConnection()

	def __setupConnection(self):
		self.connect(self.pushButton, QtCore.SIGNAL("clicked()"), globalF)

	def _pushButtonClicked(self):
		search=str(self.lineEdit.text()).strip()

		if search:
			try:
				self.listWidget.append(ulib.searchresult(search).read())
			except:
				pass
		else:
			pass


if __name__=="__main__":
	app=QtGui.QApplication(sys.argv)
	w=MainWindow()
	w.show()
	sys.exit(app.exec_())
#2

عليكم السلام و رحمة الله

نعم اخي بس اعمل ربط للزرار المسؤال عن البحث بالدالة الخاصة بالبحث و النتائج بترجع و بتعينها لخاصية عرض العناصر itmes بالـ listView

بسيطة هيك

:happy:

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#3
رغـد كتب:
عليكم السلام و رحمة الله

نعم اخي بس اعمل ربط للزرار المسؤال عن البحث بالدالة الخاصة بالبحث و النتائج بترجع و بتعينها لخاصية عرض العناصر itmes بالـ listView

بسيطة هيك

:happy:

الاخت رغد

ممكن مثال كيف بيكون طريقة كتابة الكلاس

في الحقيقة الزر مربوط بدالة البحث لكن النتائج تظهر في التيرمنال مش في اللست ويدجت

def globalF():
	 connection = sqlite3.connect('Photos.db')
		 memoryConnection = sqlite3.connect(':memory:')
		 cursor = connection.cursor()
	 cursor.execute('SELECT * FROM photos where Tag = "Tag"')
		 print cursor.fetchall()
  def __setupConnection(self):
		 self.connect(self.pushButton, QtCore.SIGNAL("clicked()"), globalF)
  def _pushButtonClicked(self):

تم تعديل هذه المشاركة بواسطة ubuntu-pro في 16 فبراير 2009 في 10:59

#4
ubuntu-pro كتب:
الاخت رغد

ممكن مثال كيف بيكون طريقة كتابة الكلاس

في الحقيقة الزر مربوط بدالة البحث لكن النتائج تظهر في التيرمنال مش في اللست ويدجت

def globalF():
	  connection = sqlite3.connect('Photos.db')
		  memoryConnection = sqlite3.connect(':memory:')
		  cursor = connection.cursor()
	  cursor.execute('SELECT * FROM photos where Tag = "Tag"')
		  print cursor.fetchall()
   def __setupConnection(self):
		  self.connect(self.pushButton, QtCore.SIGNAL("clicked()"), globalF)
   def _pushButtonClicked(self):

آسفة اخي, لأن المنتدى مشغولين بالتحديثات!!

بس هيك بكل بساطة اعمل تحويل للنتائج من التيرمنال إلى اللست بواسطة (ربما) الدالة

.addItem(...)

حاول تقرأ التوثيقات المرفقة اخي

المثال بيكون صعب علي شوي

آسفة اخي

:happy:

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#5
import sqlite3
from pysqlite2 import dbapi2 as sqlite3

اولا مش ليها لزمة استدعى الأولى -مكتبات بايثون الأساسية-وفى حال عدم توافرها -اصدار قديم او كدا- ImportError استدعى التانية

دا جزء من كود كتبته قبل كدا حيث lookup بتنفذ استعلام على قاعدة البيانات

		for row in self.__wlLooker.lookup():

				# it yields (en, ar) --> row[0], row[1]

				self.lstEnglishWords.addItem(row[0])

				self.lstArabicWords.addItem(row[1])

فبتضيف العنصر بإستخدام addItem مع عنصر واحد

وبردو globalF مش ليها اى لزمة والداتابيز مش بتتقفل اصلا .. دا غير محاولة فتحها عند كل ضغطة!

خلى الإتصال مع الداتابيز يتم تنفيذه فى ال __init__ مثلا وتخلي ال connection وال cursor ك instance variables.

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 18 فبراير 2009 في 23:34

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#6
ahmed_youssef كتب:
<br />
import sqlite3<br />
from pysqlite2 import dbapi2 as sqlite3

<br />اولا مش ليها لزمة استدعى الأولى -مكتبات بايثون الأساسية-وفى حال عدم توافرها -اصدار قديم او كدا- ImportError استدعى التانية <br />دا جزء من كود كتبته قبل كدا حيث lookup بتنفذ استعلام على قاعدة البيانات <br />

        for row in self.__wlLooker.lookup():<br />
<br />
                # it yields (en, ar) --> row[0], row[1]<br />
<br />
                self.lstEnglishWords.addItem(row[0])<br />
<br />
                self.lstArabicWords.addItem(row[1])

<br />فبتضيف العنصر بإستخدام addItem مع عنصر واحد<br />وبردو globalF مش ليها اى لزمة والداتابيز مش بتتقفل اصلا .. دا غير محاولة فتحها عند كل ضغطة!<br />خلى الإتصال مع الداتابيز يتم تنفيذه فى ال __init__ مثلا وتخلي ال connection وال cursor ك instance variables.<br />

<br /><br /><br />

اخي العزيز جربت الكود تبعك والي هو هذا السطر

self.listViewitem1.addItem(row[0])

لكن يطلع لي هذا الخطا attribute erro: addItem

اي فكرة عن المشكلة

لعلمك انا احاول استعمل السطر تبعك مشان استدعلى ملفات صور من qfiledailoug الى listViewitem

لكن مش عارف ايش المشكلة

وهذا سطر استدعاء الفايل دايلوج

filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file','/home/')

#7

انت بتستخدم ال ListView ولا ListWidget ? لأن التعديلات المفروض هتتم على ال model

فى ال Qt Assistant اقرا جزئية Model/View Programming عشان تعرف ازاى ت render ال model -اللى فيه البيانات-

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 23 فبراير 2009 في 01:55

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#8
ahmed_youssef كتب:
انت بتستخدم ال ListView ولا ListWidget ? لأن التعديلات المفروض هتتم على ال model

فى ال Qt Assistant اقرا جزئية Model/View Programming عشان تعرف ازاى ت render ال model -اللى فيه البيانات-

انا استخدم

self.listViewitem1 = QtGui.QListView(self.centralwidget)

واحاول لي فترة اربطها مع الفايل دايلوج الي من خلالة اقد اخش على ملفاتي في الجهاز واختار الفايلات المطلوبة ولكن مش عارف كيف اربط اختيار الملفات مع عرضها على

listViewitem1

جربت اكثر الامثلة ومش ايش الخطا لاننا مش عارق كثير عن طبيعة الكيوتي والبايثون لكن اهو بنتعلم

وهذا الكود الي يستدعي الفايل دايلوج

filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file','/home/')

هذا سكرين شوت من حقي البرنامج

post-176755-1235366959_thumb.jpg

وهذا الكودات الرئيسية

import sys

from mainui import Ui_MainWindow as UIMW

from PyQt4.QtCore import QObject, SIGNAL, Qt,QDir, SLOT

from PyQt4.QtGui import QApplication,QDirModel,QListView

from PyQt4 import QtCore, QtGui

import urllib2 as ulib

def listViewitem1(self):

#dirModel = QDirModel()

listViewitem1 = QtGui.QListView()

#QListView.setModel(dirModel)

#QListView = listViewitem1.setModel(dirModel)

#self.listViewitem1.setRootIndex( dirModel.index( QDir.currentPath() ) )

class MyWindow(QtGui.QMainWindow, UIMW):

def __init__(self):

QtGui.QMainWindow.__init__(self)

self.setupUi(self)

self.__setupConnections()

def __setupConnections(self):

self.connect(self.addphoto, QtCore.SIGNAL("clicked()") ,self._addphotoClicked)

self.connect(self.addphotoandtag, QtCore.SIGNAL("clicked()") ,self._addphotoandtagClicked)

self.connect(self.removephoto, QtCore.SIGNAL("clicked()") ,self._removephotoClicked)

self.connect(self.searchphoto, QtCore.SIGNAL("clicked()" ) ,self._searchphotoClicked)

self.connect(self.cancel, QtCore.SIGNAL("clicked()"), self._cancelClicked)

self.connect(self.actionImport_Photos, QtCore.SIGNAL("triggered()") , self._actionImport_Photos)

#self.connect(self.actionExit, QtCore.SIGNAL("clicked()"), self._actionExitClicked)

#self.connect(self.listViewitem1, QtCore.SIGNAL("triggered()"), self._listViewitem1)

#self.connect(self.listViewitem1, QtCore.SIGNAL("triggered()"), self._addphotoClicked)

#self.connect(self.listViewitem1, QtCore.SIGNAL("triggered()"), self._addphotoandtagClicked)

def _addphotoClicked(self):

pass

def _addphotoandtagClicked(self):

pass

def _searchphotoClicked(self):

pass

def _removephotoClicked(self):

pass

def _FinishClicked(self):

pass

def _cancelClicked(self):

pass

def _actionImport_Photos(self):

filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file','/home/')

self.listViewitem1.additem(row[0])

#def _actionExitClicked(self):

#pass

if __name__=="__main__":

app=QtGui.QApplication(sys.argv)

w=MyWindow()

w.show()

sys.exit(app.exec_())

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…