[PyQt] Two questions about PyQt
tiob lew
lewtiob at hotmail.com
Wed Nov 25 15:07:21 GMT 2009
Thank you so much for the help.
Once more question. Again related to the RadioButton.
Assume we define two RadioButtons as rb1 = QtGui.QRadioButton('MyRadioButton1', self) rb2 = QtGui.QRadioButton('MyRadioButton2', self)
If rb1 is checked , one action is performed in some other place. If rb2 is checked, some other action is performed.
For example, in the following code, if rb1 is checked, the name should be set to 'Alice' if Button 'update' is hit. if rb2 is checked, then the name should be set to 'Tom'.
How should the code be modified to achieve this goal.
Many thanks.
===================================================#!/usr/bin/python#MyUI.py
import sysimport randomfrom PyQt4 import QtCore, QtGui
class MyUI2(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent)
self.setWindowTitle('My UI2')
self.rb1 = QtGui.QRadioButton('MyButton1', self) self.rb2 = QtGui.QRadioButton('MyButton2', self)
bg = QtGui.QButtonGroup(parent) bg.setExclusive(1) bg.addButton(self.rb1) bg.addButton(self.rb2)
hbox = QtGui.QHBoxLayout() hbox.addStretch(1) hbox.addWidget(self.rb1) hbox.addWidget(self.rb2) self.setLayout(hbox) self.resize(900, 600)
lb1 = QtGui.QLabel('Name')
self.tf1 = QtGui.QLineEdit() hbox.addWidget(lb1) hbox.addWidget(self.tf1)
self.tf1.setText('Jone') update = QtGui.QPushButton('update') hbox.addWidget(update) self.connect(update, QtCore.SIGNAL('clicked()'), self.update_info ) def update_info(self): tx='' #if self.rb1.checked(): # self.tf1.setText('Alice') #if self.rb2.checked(): # self.tf1.setText('Tom')
app = QtGui.QApplication(sys.argv)ui = MyUI2()ui.show()sys.exit(app.exec_())===================================================
> From: david.douard at logilab.fr
> To: pyqt at riverbankcomputing.com
> Subject: Re: [PyQt] Two questions about PyQt
> Date: Wed, 25 Nov 2009 08:46:58 +0100
> CC: lewtiob at hotmail.com
>
> 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
_________________________________________________________________
Windows 7: It works the way you want. Learn more.
http://www.microsoft.com/Windows/windows-7/default.aspx?ocid=PID24727::T:WLMTAGL:ON:WL:en-US:WWL_WIN_evergreen:112009v2
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20091125/0fa740b5/attachment.html
More information about the PyQt
mailing list