[PyQt] Two questions about PyQt

David Douard david.douard at logilab.fr
Wed Nov 25 07:46:58 GMT 2009


Le Wednesday 25 November 2009 07:19:48 tiob lew, vous avez écrit :
> I am a newbie to Python and have two questions using python to design UI
> based PyQT4.6.
>
> The source code is
> ===========================================
> #!/usr/bin/python
> #MyUI.py
>
> import sys
> import random
> from PyQt4 import QtCore, QtGui
>
>
> class MyUI(QtGui.QWidget):
>     def __init__(self, parent=None):
>         QtGui.QWidget.__init__(self, parent)
>         self.setWindowTitle('My UI')
>
>         cb1 = QtGui.QCheckBox('MyCheckBox1', self)
>         cb2 = QtGui.QCheckBox('MyCheckBox2', self)
>
>         bg = QtGui.QButtonGroup(parent)
>
>         bg.setExclusive(1)
>         bg.addButton(cb1)
>         bg.addButton(cb2)
>
>         hbox = QtGui.QHBoxLayout()
>         hbox.addStretch(1)
>         hbox.addWidget(cb1)
>         hbox.addWidget(cb2)
>         self.setLayout(hbox)
>         self.resize(900, 600)
>
>         lb1 = QtGui.QLabel('Name')
>         lb2 = QtGui.QLabel('Age')
>         lb3 = QtGui.QLabel('Address')
>
>         tf1 = QtGui.QLineEdit()
>         tf2 = QtGui.QLineEdit()
>         tf3 = QtGui.QLineEdit()
>
>         hbox.addWidget(lb1)
>         hbox.addWidget(tf1)
>         hbox.addWidget(lb2)
>         hbox.addWidget(tf2)
>         hbox.addWidget(lb3)
>         hbox.addWidget(tf3)
>
>         tf1.setText('Jone')
>         tf2.setText('28')
>         tf3.setText('London')
>
>         update = QtGui.QPushButton('update')
>         hbox.addWidget(update)
>         self.connect(update, QtCore.SIGNAL('clicked()'),
>              self, QtCore.SLOT('update_info(self)'))
>
>     def update_info(self):
>         tf1.setText('Alice')
>         tf2.setText('18')
>         tf3.setText('New York')
>
> app = QtGui.QApplication(sys.argv)
> ui = MyUI()
> ui.show()
> sys.exit(app.exec_())
>
>
> ============================================
>
> I want to implement two functions in this piece of code.
> 1) implement the exclusive checkbox in a group of checkboxes. In another
> word, only one of CheckBox1 and Checkbox2 could be checked at any time.

Use QRadioButton widgets for this.

> 2) After clicking "update" button, the information should be updated as
> Name ----> Alice
> Age -----> 18
> Address---> New York

Simply keep references to your QLineEdit widgets as attributes of your class, 
eg. by replacing everywhere "tf1" by "self.tf1" (and so forth).
And replace 
         self.connect(update, QtCore.SIGNAL('clicked()'),
              self, QtCore.SLOT('update_info(self)'))

by 
         self.connect(update, QtCore.SIGNAL('clicked()'),
              self.update_info)

>
> How should the code be modified to implement this two functionalities?

Basically, you really should read a bit of Python, Qt and PyQt documentation 
or at least follow tutorials.

> Many thanks.
>
> _________________________________________________________________
> Hotmail: Trusted email with powerful SPAM protection.
> http://clk.atdmt.com/GBL/go/177141665/direct/01/



-- 
David Douard                        LOGILAB, Paris (France), +33 1 45 32 03 12
Formations Python, Zope, Debian :   http://www.logilab.fr/formations
Développement logiciel sur mesure : http://www.logilab.fr/services
Informatique scientifique :         http://www.logilab.fr/science



More information about the PyQt mailing list