Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.3.1 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Interconnexion des fonctions issue des différents class

Bonjour a tous,

Car j'ai crée des Spinbox dans le MainWindow, qui en fonctions des combinaison des combobox (présent aussi dans le MainWindow) insère les valeurs des spinbox dans une liste.

Ce test est fait grâce à la fonction "def choix()" présent dans la classe "Essai" . Ainsi j'ai crée un bouton "DRC" qui ouvre une fenêtre PopUp, dans lequel se trouve 3 Spinbox.

Je voudrai donc savoir comment connecter la fonction "def choix()" présent dans la classe "Essai", au Spinbox présents dans une autre classe : "MyPopup_1"

En gros, je veut que les Spinbox présent dans la fenêtre Popup, fassent le même travail que les Spinbox qui sont dans le MainWindow :)

Remarque : Le code n'est pas si compliqué a comprendre, ne vous occupez pas des liaison série, des actions..... Concentrons nous juste sur ce que j'ai dit

Merci de m'aider sur ce projet.

#!/usr/bin/env python
# -*- coding: cp1252 -*-
#SPEC 0.4

import sys
import time
import serial
import binascii

from PyQt4 import QtCore, QtGui

Tab = [0]*12

class MyPopup(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)

# Titre_1
self.Label_1 = QtGui.QLabel()
self.Label_1.setText("NUMERO DE PORT")

# Titre_11
self.Label_11 = QtGui.QLabel()
self.Label_11.setText("VITESSE")

# ComboBox_11
self.ComboBox_11 = QtGui.QComboBox()
self.ComboBox_11.setGeometry(QtCore.QRect(10,10,10,10))
self.ComboBox_11.addItem("COM 1")
self.ComboBox_11.addItem("COM 2")
self.ComboBox_11.addItem("COM 3")
self.ComboBox_11.addItem("COM 4")

# ComboBox_22
self.ComboBox_22 = QtGui.QComboBox()
self.ComboBox_22.setGeometry(QtCore.QRect(10,10,10,10))
self.ComboBox_22.addItem("4800")
self.ComboBox_22.addItem("115200")

self.bouton1 = QtGui.QPushButton("Open", self)
self.bouton1.clicked.connect(self.F_Open)

self.bouton2 = QtGui.QPushButton("Close", self)
self.bouton2.clicked.connect(self.F_Close)

# positionner les widgets dans la fenêtre
posit = QtGui.QGridLayout()
posit.addWidget(self.Label_1, 0, 0)
posit.addWidget(self.ComboBox_11, 1, 0)
posit.addWidget(self.Label_11, 2, 0)
posit.addWidget(self.ComboBox_22, 3, 0)
posit.addWidget(self.bouton1, 4, 0)
posit.addWidget(self.bouton2, 5, 0)
self.setLayout(posit)


# SERIAL #

def F_Open(self):
F_Serial(1,self.ComboBox_11.itemText(self.ComboBox_11.currentIndex()),self.ComboBox_22.itemText(self.ComboBox_22.currentIndex()))


def F_Close(self):
F_Serial(4,"null", "null")


def M_Signal(self):
self.M_Status(3)
time.sleep(0.2)
self.M_Status(2)


def F_Serial(a,port_ou_msg,vitesse):
s = "null"
if a == 1:
num_port = int(port_ou_msg[4:6])
vit = int(vitesse)
global ser
ser = serial.Serial(num_port-1,vit,timeout=0,parity='N', rtscts=1)
print ser.portstr # check which port was really used
elif a == 2:
ser.write(port_ou_msg+"\r\n") # Ecriture verticale
elif a == 3:
s = ser.readline(120)
elif a == 4:
ser.close()
return s

#--------------------------------------------

class MyPopup_1(QtGui.QDialog):
def __init__(self):
QtGui.QWidget.__init__(self)

self.SpinBox_11 = QtGui.QSpinBox(self)
self.SpinBox_11.setRange(-60,0)
self.SpinBox_11.setSingleStep(1)
self.SpinBox_11.setValue(0)

self.SpinBox_22 = QtGui.QSpinBox(self)
self.SpinBox_22.setRange(-96,0)
self.SpinBox_22.setSingleStep(1)
self.SpinBox_22.setValue(0)

self.SpinBox_33 = QtGui.QSpinBox(self)
self.SpinBox_33.setRange(-96,0)
self.SpinBox_33.setSingleStep(1)
self.SpinBox_33.setValue(0)

position = QtGui.QGridLayout()
position.addWidget(self.SpinBox_11, 0, 0)
position.addWidget(self.SpinBox_22, 1, 0)
position.addWidget(self.SpinBox_33, 2, 0)
self.setLayout(position)



#--------------------------------------------


class Essai(QtGui.QMainWindow):
def __init__(self):
#--------------------------------------------
# Main Window #
QtGui.QMainWindow.__init__(self)
self.resize(310,310)
self.setWindowTitle(' Travaille ')

# Menu #

# Menu0
Action1 = QtGui.QAction('LOAD SGV', self)
Action1.setStatusTip('Action 1')
Action1.triggered.connect(self.M_Action1)

Action2 = QtGui.QAction('SAVE SGV', self)
Action2.setStatusTip('Action 2')
Action2.triggered.connect(self.M_Action2)

Action3 = QtGui.QAction('EXPORT TO MOBILE', self)
Action3.setStatusTip('Action 3')
Action3.triggered.connect(self.M_Action3)

menubar = self.menuBar()

ChMenu = menubar.addMenu('&Action')
ChMenu.addAction(Action1)
ChMenu.addAction(Action2)
ChMenu.addAction(Action3)

# Menu2
PopFen1 = QtGui.QAction('PopUp', self)
PopFen1.setStatusTip('PopFen1')
PopFen1.triggered.connect(self.F_Popup)

menubar = self.menuBar()

PopMenu = menubar.addMenu('&PopFen')
PopMenu.addAction(PopFen1)
#--------------------------------------------
# Dock

self.Label_0 = QtGui.QLabel()
self.Label_0.setText("MODE")

self.ComboBox_0 = QtGui.QComboBox()
self.ComboBox_0.setGeometry(QtCore.QRect(10,10,10,10))
self.ComboBox_0.addItem("HANDSET")
self.ComboBox_0.addItem("HANDFREE")
self.ComboBox_0.addItem("CAR KIT")
self.ComboBox_0.addItem("RSM")

self.Label_1 = QtGui.QLabel()
self.Label_1.setText("SIGNAL")

self.ComboBox_1 = QtGui.QComboBox()
self.ComboBox_1.setGeometry(QtCore.QRect(10,10,10,10))
self.ComboBox_1.addItem("VOICE")
self.ComboBox_1.addItem("RING")
self.ComboBox_1.addItem("BEEP")


VBoxLayout_1 = QtGui.QVBoxLayout()
VBoxLayout_1.addWidget(self.Label_0)
VBoxLayout_1.addWidget(self.ComboBox_0)
VBoxLayout_1.addWidget(self.Label_1)
VBoxLayout_1.addWidget(self.ComboBox_1)
VBoxLayout_1.setSpacing(100)

Widget_1 = QtGui.QWidget()
Widget_1.setLayout(VBoxLayout_1)

F_Dock_Wid_Vitesse = QtGui.QDockWidget()
F_Dock_Wid_Vitesse.setWidget(Widget_1)
self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, F_Dock_Wid_Vitesse)

self.SpinBox_1 = QtGui.QSpinBox(self)
self.SpinBox_1.setRange(-12,12)
self.SpinBox_1.setSingleStep(1)
self.SpinBox_1.setValue(0)

self.SpinBox_2 = QtGui.QSpinBox(self)
self.SpinBox_2.setRange(-12,12)
self.SpinBox_2.setSingleStep(1)
self.SpinBox_2.setValue(0)

self.SpinBox_3 = QtGui.QSpinBox(self)
self.SpinBox_3.setRange(-12,12)
self.SpinBox_3.setSingleStep(1)
self.SpinBox_3.setValue(0)

self.PushButton_1 = QtGui.QPushButton("DRC")
self.connect(self.PushButton_1,QtCore.SIGNAL("clicked()"),self.fenetre)

GridLayout_1 = QtGui.QGridLayout()
GridLayout_1.addWidget(self.SpinBox_1, 1,0,1,1)
GridLayout_1.addWidget(self.SpinBox_2, 2,0,1,1)
GridLayout_1.addWidget(self.SpinBox_3, 3,0,1,1)
GridLayout_1.addWidget(self.PushButton_1, 4,0,1,1)

O_GroupBox_1 = QtGui.QGroupBox()
O_GroupBox_1.setLayout(GridLayout_1)

self.setCentralWidget(O_GroupBox_1)
#--------------------------------------------

self.ComboBox_0.currentIndexChanged.connect(self.choix)
self.ComboBox_1.currentIndexChanged.connect(self.choix)

self.SpinBox_1.valueChanged.connect(self.choix)
self.SpinBox_2.valueChanged.connect(self.choix)
self.SpinBox_3.valueChanged.connect(self.choix)

def choix(self):
a = [self.SpinBox_1.value()]
b = [self.SpinBox_2.value()]
c = [self.SpinBox_3.value()]

mode = str(self.ComboBox_0.currentText())
signal = str(self.ComboBox_1.currentText())
if mode == 'HANDSET' and signal == 'VOICE':
Tab[0] = [a, b, c]
print "Voici le résultat de Tab_0 :"
print Tab[0]

elif mode == 'HANDSET' and signal == 'RING':
Tab[1] = [a, b, c]
print "Voici le résultat de Tab_1 :"
print Tab[1]

elif mode == 'HANDSET' and signal == 'BEEP':
Tab[2] = [a, b, c]
print "Voici le résultat de Tab_2:"
print Tab[2]

elif mode == 'HANDFREE' and signal == 'VOICE':
Tab[3] = [a, b, c]
print "Voici le résultat de Tab_3:"
print Tab[3]

elif mode == 'HANDFREE' and signal == 'RING':
Tab[4] = [a, b, c]
print "Voici le résultat de Tab_4:"
print Tab[4]

elif mode == 'HANDFREE' and signal == 'BEEP':
Tab[5] = [a, b, c]
print "Voici le résultat de Tab_5:"
print Tab[5]

elif mode == 'CAR KIT' and signal == 'VOICE':
Tab[6] = [a, b, c]
print "Voici le résultat de Tab_6:"
print Tab[6]

elif mode == 'CAR KIT' and signal == 'RING':
Tab[7] = [a, b, c]
print "Voici le résultat de Tab_7:"
print Tab[7]

elif mode == 'CAR KIT' and signal == 'BEEP':
Tab[8] = [a, b, c]
print "Voici le résultat de Tab_8:"
print Tab[8]

elif mode == 'RSM' and signal == 'VOICE':
Tab[9] = [a, b, c]
print "Voici le résultat de Tab_9:"
print Tab[9]

elif mode == 'RSM' and signal == 'RING':
Tab[10] = [a, b, c]
print "Voici le résultat de Tab_10:"
print Tab[10]

elif mode == 'RSM' and signal == 'BEEP':
Tab[11] = [a, b, c]
print "Voici le résultat de Tab_11:"
print Tab[11]

def initialisation(self):
Tab = [0]*12

#--------------------------------------------




def fenetre(self):
print "Opening a new popup window..."
self.w = MyPopup_1()
self.w.setGeometry(QtCore.QRect(100, 100, 400, 200))
self.w.show()


def M_Action1(self):

with open("C:/Users/ssrinivasa/Desktop/texto.txt") as f:
x = int(f.readline().rstrip())
self.SpinBox_1.setValue(x)
x = int(f.readline().rstrip())
self.SpinBox_2.setValue(x)
x = int(f.readline().rstrip())
self.SpinBox_3.setValue(x)
x = int(f.readline().rstrip())

#--------------------------------------------
def M_Action2(self):

reponse = self.SpinBox_1.value()
fichier = open("C:/Users/ssrinivasa/Desktop/fichier.txt", "a")
fichier.write(str(reponse) +"\r\n") # ajouter nouvelle ligne après écriture
reponse = self.SpinBox_2.value()
fichier.write(str(reponse) +"\r\n")
reponse = self.SpinBox_3.value()
fichier.write(str(reponse) +"\r\n")
print reponse

#-------------------------------------------
def M_Action3(self):
self.Serial_Write()

def Serial_Write(self):
value = str(self.SpinBox_1.value())
F_Serial(2,value,"null")
value = str(self.SpinBox_2.value())
F_Serial(2,value,"null")
value = str(self.SpinBox_3.value())
F_Serial(2,value,"null")

#--------------------------------------------
def F_Popup(self):
self.w = MyPopup()
self.w.setGeometry(QtCore.QRect(100, 100, 400, 200))
self.w.show()
#--------------------------------------------

def main():
'''Application'''
App = QtGui.QApplication(sys.argv)
App.setStyle("windows")
MainWin2 = Essai()
MainWin2.show()
editor = Essai()
sys.exit(App.exec_() )

if __name__=='__main__':
main()

Réponses

  • J'ai du mal à saisir ton problème. Tu parle de connecter des fonctions (?!) à des spinBox ?

    Tu veux que tes spinBox de Mainwindow fasse le meme travail que dans Essai... Moi pas savoir quoi comprendre :|

    Tu veux que les valeur soit identique en temps reel ? Que les valeur soit simplement défini au lancement de la dite fonction ?

    Et pourquoi voudrai tu copier des valeurs d'un widget à un autre identique ? si tu les as dans Mainwindow, tu peux les utiliser à partir de Mainwindow :/
Connectez-vous ou Inscrivez-vous pour répondre.