Discussion:PyQt/QCheckBox

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Réparation[modifier le wikicode]

Tout comme ceux des chapitres précédents, ce code ne fonctionne plus. En essayant de le réparer de la même façon, je bloque finalement sur un AttributeError: 'QButtonGroup' object has no attribute 'setTitle'. JackPotte ($) 2 juin 2012 à 22:27 (CEST)

En plus des problèmes de soulignés remplacés par espaces, les codes sources sont pour Qt3 au lieu de Qt4.
Heureusement, l'outil qt3to4 fonctionne également pour Python.
Malheureusement, le module Qt3Support pour Python ne semble pas fonctionner sous Windows car il s'agit d'un patch pour PyQt 4.4.3 seulement.
-- ◄ David L • discuter ► 3 juin 2012 à 00:00 (CEST)
Voici la version pour Qt4 :
#!/usr/bin/python
# -*- coding : utf-8 -*-
#
# qcheckbox.py
# Programme exemple pour la classe QCheckBox#
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Demo(QApplication) :
   def __init__(self, args) :
      QApplication.__init__(self,args)
      # widget principal, il s'agit d'une fenêtre de dialogue
      self.dialog = QDialog()
      self.dialog.setWindowTitle("Dialog")
      #Astuce : on peut grouper les boutons grâce à un
      # QGroupBox
      self.group1=QGroupBox("Essai QCheckBox", self.dialog)
      self.group1.setObjectName("group1")
      # définition de 3 checkboxes
      # NOTE : le widget Q3ButtonGroup se redimensionne automatiquement
      self.check1=QCheckBox("checkbox 1")
      self.check2=QCheckBox("checkbox 2")
      self.check3=QCheckBox("checkbox 3")
      # le bouton check1 est de type ”tristate”
      self.check1.setTristate()
      # le bouton check2 est par défaut coché
      self.check2.setChecked(True) ;
      # le bouton check3 n'est pas modifiable
      self.check3.setDisabled(True) ;
      # espace entre les boutons
      self.vbox = QVBoxLayout()
      self.vbox.addWidget(self.check1)
      self.vbox.addWidget(self.check2)
      self.vbox.addWidget(self.check3)
      self.vbox.addStretch(1)
      self.group1.setLayout(self.vbox)
      self.vbox2 = QVBoxLayout()
      self.vbox2.addWidget(self.group1)
      self.dialog.setLayout(self.vbox2)
      self.dialog.show()
      self.connect(self,SIGNAL("lastWindowClosed()"),self,SLOT("quit()"))
      self.exec_()
if __name__ == "__main__" :
   app=Demo(sys.argv)

-- ◄ David L • discuter ► 3 juin 2012 à 00:22 (CEST)

Merci ça fonctionne parfaitement. JackPotte ($) 3 juin 2012 à 14:28 (CEST)