I am trying to implement a function. My code is given below.
I want to get the text in lineedit with objectname 'host' in a string say 'shost' when the user clicks the pushbutton with name 'connect'. How can I do this? I tried and failed. How do I implement this function?
import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class Form(QDialog): def __init__(self, parent=None): super(Form, self).__init__(parent) le = QLineEdit() le.setObjectName("host") le.setText("Host") pb = QPushButton() pb.setObjectName("connect") pb.setText("Connect") layout.addWidget(le) layout.addWidget(pb) self.setLayout(layout) self.connect(pb, SIGNAL("clicked()"),self.button_click) self.setWindowTitle("Learning") def button_click(self): #i want the text in lineedit with objectname #'host' in a string say 'shost'. when the user click # the pushbutton with name connect.How do i do it? # I tried and failed. How to implement this function? app = QApplication(sys.argv) form = Form() form.show() app.exec_()
Now how do I implement the function "button_click" ? I have just started with pyQt!
As mentioned in the documentation, the text of a QLineEdit can be retrieved with its method text . Note that it's a QString , not a regular string, but that shouldn't be a problem as you format it with your "%s" % text .
QTextEdit does not have any text() method, if you want to get the text you must use toPlainText() , if you want to clean the text it is better to use clear() since it makes it more readable.
My first suggestion is to use Qt Designer to create your GUIs. Typing them out yourself sucks, takes more time, and you will definitely make more mistakes than Qt Designer.
Here are some PyQt tutorials to help get you on the right track. The first one in the list is where you should start.
A good guide for figuring out what methods are available for specific classes is the PyQt4 Class Reference. In this case, you would look up QLineEdit
and see the there is a text
method.
To answer your specific question:
To make your GUI elements available to the rest of the object, preface them with self.
import sys from PyQt4.QtCore import SIGNAL from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout class Form(QDialog): def __init__(self, parent=None): super(Form, self).__init__(parent) self.le = QLineEdit() self.le.setObjectName("host") self.le.setText("Host") self.pb = QPushButton() self.pb.setObjectName("connect") self.pb.setText("Connect") layout = QFormLayout() layout.addWidget(self.le) layout.addWidget(self.pb) self.setLayout(layout) self.connect(self.pb, SIGNAL("clicked()"),self.button_click) self.setWindowTitle("Learning") def button_click(self): # shost is a QString object shost = self.le.text() print shost app = QApplication(sys.argv) form = Form() form.show() app.exec_()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With