Je suis essayer PySide, au début quand j'ai essayé d'utiliser:Quelle est la différence entre la classe() et la classe
t = test()
Il me donnerait: TypeError: trybutton() takes 2 positional arguments but 3 were given
mais par hasard, j'ai vu qu'il irait très bien si je l'ai fait à la place:
t = test
Alors je me demande comment ça peut être?
class test():
def trybutton(name, self):
return QPushButton(name, self)
class main(QMainWindow):
def __init__(self, parent=None):
super(main, self).__init__(parent)
self.testui()
def testui(self):
main.set_button(self, "test", "testy")
def set_button(self, *names):
t = test
b = [t.trybutton(name, self) for name in names]
if __name__ == "__main__":
app = QApplication(sys.argv)
frame = main()
frame.show()
app.exec_()
avec '()' vous initialisez une instance d'objet de classe 'test', alors que' t = test' est juste de réaffecter la classe 'test' à une variable locale' t'. Vous devez créer un objet instancd plus tard avec 't()' – karthikr
'def trybutton (nom, self):' me semble bizarre. self est supposé être le premier argument d'une méthode, car elle est fournie automatiquement par Python. Cela explique aussi votre TypeError. 'trybutton' prend deux arguments, mais vous devez seulement en fournir un. – Kevin