super débutant

Le
remy
bonjour
je cherche un exemple d'interaction de programmes différents

dit différemment un prg1 lance un prog2
et le prog2 modifie une variable du programme 1

ou de manière plus prosaïque

une fenêtre graphique avec un champ txt en bas écrit en python
et je rentre le chemin par exemple le ../programm2.py écrit lui aussi e=
n
python un clic sur un bouton du programme 1

et le programme 2 affiche une chaine de caractères dans la fenêtre
du programme 1

je voudrais si cela est possible éviter les fichiers ou sockets

merci pour tout lien ou piste
remy

--
http://remyaumeunier.chez-alice.fr/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Encolpe Degoute
Le #22835511
Bonjour,

Le 23/11/2010 14:06, remy a écrit :
bonjour
je cherche un exemple d'interaction de programmes différents

dit différemment un prg1 lance un prog2
et le prog2 modifie une variable du programme 1

ou de manière plus prosaïque

une fenêtre graphique avec un champ txt en bas écrit en python
et je rentre le chemin par exemple le ../programm2.py écrit lui aussi en
python un clic sur un bouton du programme 1



Deux pistes :

1. le programme 2 est dans le PATH du python du programme 1 (chemin de
recherche). Dans ce cas un 'from toto.programme2 import main; return
main()' te permettra de récupérer le résultat dans le programme 1.

2. le programme 2 peut être n'importe où. Dans ce cas
'exec("/usr/bin/python /chemin/programme2")' renverra le résultat.

et le programme 2 affiche une chaine de caractères dans la fenêtre
du programme 1



Le programme 1 doit gérer lui même le rafraichissement de la zone de
données.

Cet article est un départ :
http://www.commentcamarche.net/faq/8014-votre-premiere-application-graphique-avec-python-et-glade

--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales
remy
Le #22839121
Encolpe Degoute a écrit :
Bonjour,

Le 23/11/2010 14:06, remy a écrit :
bonjour
je cherche un exemple d'interaction de programmes différents

dit différemment un prg1 lance un prog2
et le prog2 modifie une variable du programme 1

ou de manière plus prosaïque

une fenêtre graphique avec un champ txt en bas écrit en python
et je rentre le chemin par exemple le ../programm2.py écrit lui auss i en
python un clic sur un bouton du programme 1



Deux pistes :

1. le programme 2 est dans le PATH du python du programme 1 (chemin de
recherche). Dans ce cas un 'from toto.programme2 import main; return
main()' te permettra de récupérer le résultat dans le programme 1 .

2. le programme 2 peut être n'importe où. Dans ce cas
'exec("/usr/bin/python /chemin/programme2")' renverra le résultat.

et le programme 2 affiche une chaine de caractères dans la fenêtre
du programme 1



Le programme 1 doit gérer lui même le rafraichissement de la zone d e
données.

Cet article est un départ :
http://www.commentcamarche.net/faq/8014-votre-premiere-application-grap hique-avec-python-et-glade



oui mais le code de l'interface est dans le programme 1 qui sera
certainement du pyqt et rafraichi par le programme 2 suite à un
affichage effectué par le programme 2

dans tous les cas merci pour les pistes, j'aime bien la première
solution

remy
--
http://remyaumeunier.chez-alice.fr/
Laurent Pointal
Le #22844321
remy wrote:

bonjour
je cherche un exemple d'interaction de programmes différents

dit différemment un prg1 lance un prog2
et le prog2 modifie une variable du programme 1

ou de manière plus prosaïque

une fenêtre graphique avec un champ txt en bas écrit en python
et je rentre le chemin par exemple le ../programm2.py écrit lui aussi en
python un clic sur un bouton du programme 1

et le programme 2 affiche une chaine de caractères dans la fenêtre
du programme 1

je voudrais si cela est possible éviter les fichiers ou sockets



Même si c'est transparent ?

Pyro (Python Remote Object), destiné à la communication entre des programmes
Python, vient de sortir en version 3.11:

Hi,

Pyro 3.11 has been released!

Pyro is a an advanced and powerful Distributed Object Technology system
written entirely
in Python, that is designed to be very easy to use.
Have a look at http://www.xs4all.nl/~irmen/pyro3/ for more information.

Highlights of this release are:
- improved compatibility with Jython
- fixed some threading problems regarding proxy connections
- fixed a threading issue that could break COM calls
- persistent mode nameserver improved

As always the detailed changes are in the change log chapter in the manual.
More info and download link available in PyPI:
http://pypi.python.org/pypi/Pyro/


Enjoy,
Irmen de Jong



merci pour tout lien ou piste
remy

remy
Le #22847331
je me réponds parce que disons que je reprends tout depuis le début


donc j'arrive du monde de java avec lequel
j'arrive à faire ce que je veux sans trop de difficulté
je débarque donc dans le monde de python

mon environnement de travail windows xp (j'ai pas le choix)

python 2.7
PyQt-py2.7-gpl 4.8.1-1
pyserial-py3k-2.5.win32

le plus important c'est la bibliothèque pyserial
j'ai pris python 2.7 parce qu'elle ne m'a pas semblé fonctionner
avec python 3 et comme c'est la pierre angulaire

donc après avoir lu des tonnes de pdf
comme
http://www.google.fr/url?sa=t&source=web&cd&ved DcQFjAEOAo&u rl=http%3A%2F%2Fweb.univ-pau.fr%2F~puiseux%2Fenseignement%2Fpython%2Ftu to-PyQt.04(signaux-slots).pdf&rct=j&q=pyqt%20slot&ei=N7HvTL6BIsyChQ eGwNicDA&usg¯QjCNEf2A7-O58S6jMHQe73zGTLR_ByyA&sig2=3unx0FzHHzPUlFax ZW98Ow&cad=rja
et
http://www.google.fr/url?sa=t&source=web&cd=1&sqi=2&ved BcQFj AA&url=http%3A%2F%2Fwww.borer.name%2Ffiles%2Feivd%2Fpyqt%2Frapport_PyQt .pdf&rct=j&q=la%20librairie%20graphique%20Pyqt&ei=qbHvTKbBB8mVOtb Ftf4J&usg¯QjCNEKBNxt83apy6yidyZOW6HVjWCsgg&sig2=8MWJdJDQ4bfmE9Qnw4N twA&cad=rja
plus quelques tutoriels

je n'arrive toujours à rien, je tombe sur des exemples qui ne veulent
pas se compiler comme par exemple http://www2.cs.usfca.edu/~afedosov/qttu t/
entre autre une sordide histoire de bibliothèque



donc pour commencer self quelqu'un peut il me confirmer que cela
s'apparente au this en java

ensuite les signaux et slot si je prends un exemple fait avec avec
qt designer

aller zou

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'banc.ui'
#
# Created: Fri Nov 26 12:17:13 2010
# by: PyQt4 UI code generator 4.8.1
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(800, 600)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.verticalLayoutWidget = QtGui.QWidget(self.centralwidget)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(19, 29, 761,
471))

self.verticalLayoutWidget.setObjectName(_fromUtf8("verticalLayoutWidget") )
self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWid get)
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.textEdit = QtGui.QTextEdit(self.verticalLayoutWidget)
self.textEdit.setObjectName(_fromUtf8("textEdit"))
self.verticalLayout.addWidget(self.textEdit)
self.horizontalLayoutWidget = QtGui.QWidget(self.centralwidget )
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 519,
761, 41))

self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidg et"))

self.horizontalLayout =
QtGui.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout" ))
self.pushButton_2 = QtGui.QPushButton(self.horizontalLayoutWid get)
self.pushButton_2.setDefault(False)
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.horizontalLayout.addWidget(self.pushButton_2)
self.lineEdit = QtGui.QLineEdit(self.horizontalLayoutWidget)
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.horizontalLayout.addWidget(self.lineEdit)
self.pushButton = QtGui.QPushButton(self.horizontalLayoutWidge t)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.horizontalLayout.addWidget(self.pushButton)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 20))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.pushButton_2,
QtCore.SIGNAL(_fromUtf8("clicked()")), self.textEdit.clear)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):

MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow",
"MainWindow", None, QtGui.QApplication.UnicodeUTF8))

self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow",
"Ouvir", None, QtGui.QApplication.UnicodeUTF8))

self.pushButton.setText(QtGui.QApplication.translate("MainWindow",
"Lancez", None, QtGui.QApplication.UnicodeUTF8))


if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())




comment je peux modifier le signal


QtCore.QObject.connect(self.pushButton_2,
QtCore.SIGNAL(_fromUtf8("clicked()")), self.textEdit.clear)

pour qu'il appelle une fonction dans une autre class
par exemple essai et la fonction test

class essai:
def test (self):
print "coucou"
self.textEdit.clear


et vaut il mieux utiliser les actions ou les signaux
les actions ont l'air d'être plus clairs pour quelqu'un
qui arrive de java

en gros j'arrive à lire et comprendre du moins je pense les exemples qu e
google me propose mais l'interpréteur à chaque fois me sort une err eur

il me manque peut être un élément



merci pour tout lien ou piste

remy












--
http://remyaumeunier.chez-alice.fr/
Laurent Pointal
Le #22853961
remy wrote:
<zip>
je me réponds parce que disons que je reprends tout depuis le début


<zip>
donc pour commencer self quelqu'un peut il me confirmer que cela
s'apparente au this en java

ensuite les signaux et slot si je prends un exemple fait avec avec
qt designer


<zip>

Bonjour,

Oui, this de java => self du Python.
De plus, l'accès aux attributs des objets ou l'appel des méthodes doivent
*explicitement* passer par self: self.xxx ou selh.meth_xxx().

Sinon, pour PyQt, je suis un peu out (m'y suis pas encore mis vraiment).

Une autre source d'échange que j'utilise, et qui est tout de même plus
active que les newsgroups, c'est la liste Python de l'AFUL:

List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe:
(ça a beau être hébergé par l'AFUL, on y cause de Python sur toutes les
plateformes).

A+
Laurent.
remy
Le #22859761
Laurent Pointal a écrit :
remy wrote:
<zip>
je me réponds parce que disons que je reprends tout depuis le dà ©but


<zip>
donc pour commencer self quelqu'un peut il me confirmer que cela
s'apparente au this en java

ensuite les signaux et slot si je prends un exemple fait avec avec
qt designer


<zip>

Bonjour,

Oui, this de java => self du Python.
De plus, l'accès aux attributs des objets ou l'appel des méth odes doivent
*explicitement* passer par self: self.xxx ou selh.meth_xxx().

Sinon, pour PyQt, je suis un peu out (m'y suis pas encore mis vraiment) .



merci pour les infos
ce week-end je m'y suis mis
donc comme je suis un très gros débutant moins d'une semaine mo n retour
d'expérience si cela peut être utile

donc oublies tout ce qui ressemble de près ou de loin à un gà ©nérateur de
code automatique, le code fonctionne certes mais il est assez
hermétique .j'ai tout repris depuis le début et j'arrive à la même chose
que qt designer en plus lisible allez zou




import sys
from PyQt4 import QtGui,QtCore


class Mafentre(QtGui.QWidget):


def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.resize(400, 600)
self.setWindowTitle('Banc')
self.centre()
self.icone()
self.info()
self.init()
self.gril()

def init(self):
global ouvir,lancez,line
ouvir=self.boutonOuvir()
self.soltOuvir()
lancez=self.boutonLancez()
self.soltLancez()
line=self.zoneLine()
def getOuvir(self):
return ouvir
def getLancez(self):
return lancez
def getLine(self):
return line
def soltOuvir(self):
self.connect(self.getOuvir(), QtCore.SIGNAL('clicked()'),self.dialog)
def soltLancez(self):
self.connect(self.getLancez(),
QtCore.SIGNAL('clicked()'),self.execScrip)
def info(self):
self.setToolTip('info <b>Script et perif</b> ')
QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10))
def centre(self):
screen = QtGui.QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width()-size.width())/2,
(screen.height()-size.height())/2-100)
def icone(self):
self.setWindowIcon(QtGui.QIcon('web.png'))
def boutonOuvir(self):
ouvir = QtGui.QPushButton('Ouvir')
ouvir.setToolTip('Rechercher un <b>Script</b> ')
QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10))
return ouvir
def boutonLancez(self):
lancez = QtGui.QPushButton('Lancez')
lancez.setEnabled(False)
lancez.setToolTip('Lancez un <b>Script</b> ')
QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10))
return lancez
def zoneLine(self):
line = QtGui.QLineEdit('.../')
line.setToolTip('Chemin du <b>Script</b> ')
QtGui.QToolTip.setFont(QtGui.QFont('OldEnglish', 10))
return line
def zoneText(self):
sortie = QtGui.QTextEdit('un')
sortie.setReadOnly(True)
return sortie
def gril(self):
gril = QtGui.QGridLayout()
gril.addWidget(self.zoneText(),1,1)
gril.addWidget(self.getOuvir(),2,0)
gril.addWidget(self.getLine(),2,1)
gril.addWidget(self.getLancez(),2,2)
self.setLayout(gril)
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Escape:
self.close()
def dialog(self):
filename = QtGui.QFileDialog.getOpenFileName(self, 'ouvir un Fichier' )
l=self.getLine()
l.setText(filename)
self.getLancez().setEnabled(True)

def execScrip(self):
l=self.getLine().text()
a='"%s"'%l
print "******************"
print a
#__import__(a)
#execfile(a)


app = QtGui.QApplication(sys.argv)
tooltip = Mafentre()
tooltip.show()
sys.exit(app.exec_())




par contre je n'arrive pas à faire fonctionner
la fonction

def execScrip(self):

en gros execfile("test.py") marche

mais

a="test.py"
execfile(a) marche pas il doit y avoir un truc qui m'échappe
et mom pb s'est que le nom du script ne peut pas être dur


remy







Une autre source d'échange que j'utilise, et qui est tout de mê me plus
active que les newsgroups, c'est la liste Python de l'AFUL:

List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe:
(ça a beau être hébergé par l'AFUL, on y cause de P ython sur toutes les
plateformes).

A+
Laurent.





--
http://remyaumeunier.chez-alice.fr/
Publicité
Poster une réponse
Anonyme