Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur???

Sujet résolu
    24 mars 2015 à 9:38:16

    Bonjour a tous,

    Alors voici mon probleme , je suis tout proche de finir mon projet pour vous dire mais en gros lorsque dans mon interface graphique je click sur le boutton pour lancer le script, je me tape une erreur que j'ai jamais eu je comprend pas d'ou elle vien , la voici :

    Traceback (most recent call last):
      File "/users/rnencib/Downloads/binoculars-master/Window.py", line 60, in ShowFile
        self.tab_widget.addTab(Conf_Tab(self),NameFile[0])
      File "/users/rnencib/Downloads/binoculars-master/Window.py", line 181, in __init__
        Layout.addWidget(self.run,7,0)
    TypeError: arguments did not match any overloaded call:
      QGridLayout.addWidget(QWidget): argument 1 has unexpected type 'instancemethod'
      QGridLayout.addWidget(QWidget, int, int, Qt.Alignment alignment=0): argument 1 has unexpected type 'instancemethod'
      QGridLayout.addWidget(QWidget, int, int, int, int, Qt.Alignment alignment=0): argument 1 has unexpected type 'instancemethod'
    


    surtout ce que je comprend pas c'est qu'est ce que font mes grid layout la dedans, tout fonctionaient tres bien jusqu'a que j'ajoute ma method run... mais la aussi je ne vois pas ou est le probleme enfin bref la y'a tout qui m'echape, j'utilise Python2.7 et PyQt4.

    voici le code si quel qu'un peut me dire ou est cette foutu erreur ou juste m'expliquer ce que veut me dire le trace back cette personne sera mon heros

    class Conf_Tab(QWidget):
        def __init__(self, parent = None):
    
            super(Conf_Tab,self).__init__()
            self.Dis = Table()
            self.Inp = Table()
            self.Pro = Table()
    
            label1 = QLabel('<strong>Dispatcher</strong>')
            label2 = QLabel('<strong>Input</strong>')
            label3 = QLabel('<strong>Projection<strong>')
    
            self.select = QComboBox()
            backends = list(backend.lower() for backend in BINoculars.util.get_backends())
            self.select.addItems(QStringList(backends))
            self.start = QPushButton('run')
    self.connect(self.start, SIGNAL("clicked()"), self.run) self.scan = QLineEdit() self.start.setStyleSheet("background-color: darkred") Layout = QGridLayout() Layout.addWidget(self.select,0,1) Layout.addWidget(label1,1,1) Layout.addWidget(self.Dis,2,1) Layout.addWidget(label2,3,1) Layout.addWidget(self.Inp,4,1) Layout.addWidget(label3,5,1) Layout.addWidget(self.Pro,6,1) Layout.addWidget(self.run,7,0) Layout.addWidget(self.scan,7,1) self.setLayout(Layout) self.Dis.add_to_combo(QStringList(BINoculars.util.get_dispatchers())) self.select.activated['QString'].connect(self.DataCombo) self.Inp.combobox.activated['QString'].connect(self.DataTableInp) self.Pro.combobox.activated['QString'].connect(self.DataTableInpPro) self.Dis.combobox.activated['QString'].connect(self.DataTableInpDis) def DataCombo(self,text): self.Inp.add_to_combo(QStringList(BINoculars.util.get_inputs(str(text)))) self.Pro.add_to_combo(QStringList(BINoculars.util.get_projections(str(text)))) def DataTableInp (self,text): backend = str(self.select.currentText()) inp = BINoculars.util.get_input_configkeys(backend, str(self.Inp.combobox.currentText())) self.Inp.addDataConf(inp) def DataTableInpPro (self,text): backend = str(self.select.currentText()) proj = BINoculars.util.get_projection_configkeys(backend, str(self.Pro.combobox.currentText())) self.Pro.addDataConf(proj) def DataTableInpDis (self,text): backend = str(self.select.currentText()) disp = BINoculars.util.get_dispatcher_configkeys(str(self.Dis.combobox.currentText())) self.Dis.addDataConf(disp) def save(self, filename): with open(filename, 'w') as fp: fp.write('[dispatcher]\n') for key, value, comment in self.Dis.getParam():# cycles over the iterator object fp.write('{0} = {1} #{2}\n'.format(key, value, comment)) fp.write('[input]\n') for key, value, comment in self.Inp.getParam(): if key == 'type': value = '{0}:{1}'.format(self.select.currentText(),value) fp.write('{0} = {1} #{2}\n'.format(key, value, comment)) fp.write('[projection]\n') for key, value, comment in self.Pro.getParam(): if key == 'type': value = '{0}:{1}'.format(self.select.currentText(),value) fp.write('{0} = {1} #{2}\n'.format(key, value, comment)) def get_configobj(self, filename): indict = {} for key, value, comment in self.Inp.getParam(): if key == 'type': value = '{0}:{1}'.format(self.select.currentText(),value) indict[key] = value for key, value, comment in self.Dis.getParam():# cycles over the iterator object if key == 'type': value = '{0}:{1}'.format(self.select.currentText(),value) indict[key] = value for key, value, comment in self.Pro.getParam(): if key == 'type': value = '{0}:{1}'.format(self.select.currentText(),value) indict[key] = value cfg = BINoculars.util.Configfile() setattr(cfg, 'input', indict) setattr(cfg, 'dispatcher', indict) setattr(cfg, 'projection', indict) return cfg def read_data(self,filename): with open(filename, 'r') as inf: lines = inf.readlines() data = {'dispatcher': [], 'input': [], 'projection': []} for line in lines: line = line.strip('\n') if '[dispatcher]' in line: key = 'dispatcher' elif '[input]' in line: key = 'input' elif '[projection]' in line: key = 'projection' else: if '#' in line: index = line.index('#') caput = line[:index] cauda = line[index:] else: caput = line cauda = '' if '=' in caput: name, value = caput.split('=') if name.strip(' ') == 'type' and ':' in value: backend, value = value.strip(' ').split(':') data[key].append([name.strip(' '), value.strip(' '), cauda.strip(' ')]) self.select.setCurrentIndex(self.select.findText(backend, Qt.MatchFixedString)) self.DataCombo(backend) for key in data: if key == 'dispatcher': self.Dis.addData(data[key]) elif key == 'input': self.Inp.addData(data[key]) elif key == 'projection': self.Pro.addData(data[key]) def run(self, cfg): command = self.scan.text() BINoculars.main.Main.from_object(cfg, command)



    -
    Edité par Myrens 24 mars 2015 à 12:11:15

    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2015 à 9:07:29

      Personne ? dites moi s'il vous manque des infos
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        25 mars 2015 à 9:15:15

        La méthode addWidget prend en 1er argument un QWidget, vérifie que ce type est correct pour toutes tes méthodes addWidget exécutées...

        Si tu me dis que c'est bon, c'est que tu n'as pas compris ce qu'est un QWidget !

        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2015 à 9:59:00

          Oh seigneur merci, 3 jours que je me retourne le cerveau sur cet erreur, qu'est ce que je peut etre con! Mais merci encore oldProgrammer sans toi je pense que j'aurais cherché encore longtemps...
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            25 mars 2015 à 10:08:57

            Il n'y a pas de soucis, mais l'erreur est assez claire, c'est peut-être pour cela que tu n'avais pas de retour, les membres attendaient peut-être que tu cherches une erreur évidente pour eux.

            argument 1 has unexpected type 'instancemethod'

            Veut dire que l'argument de type méthode d'instance, n'est pas celui attendu par ta méthode addWidget...

            On voit bien que ta méthode run, ne retourne rien, mais en plus, tu le places dans ton addWidget sans parenthèses, sur l'interpréteur c'est plus clair en le simulant.

            >>> class A:
            ...     def __init__(self): pass
            ...     def run(self): pass
            ... 
            >>> a = A()
            >>> type(a.run)
            <type 'instancemethod'>
            

            or ce n'est pas un QWidget object tout simplement !

            Si tu mettais des parenthèses, c'est une autre erreur que tu auras

            >>> type(a.run())
            <type 'NoneType'>
            




            -
            Edité par Anonyme 25 mars 2015 à 10:10:23

            • Partager sur Facebook
            • Partager sur Twitter

            Erreur???

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown