LinuxBill
LinuxBill

Reputation: 415

PyQt : Creating variables from LineEdit

import logging
import sys
import suds
from PyQt4 import QtCore, QtGui, QtNetwork
from service import Ui_Form
from suds.wsse import *

logging.basicConfig(level=logging.DEBUG)
logging.getLogger("suds.client").setLevel(logging.CRITICAL)
url = "http://xxxxxxxxx:xxxx/services/FireScopeConfigurationWebService/v1?wsdl"
token = UsernameToken("xxx", "xxxxx")
security = Security()
security.tokens.append(token)

client = suds.client.Client(url)
client.set_options(wsse = security)

class StartQT4(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.createButton,QtCore.SIGNAL("clicked()"), self.create_srv)
        ciEditLine = QtGui.QLineEdit()        #variable 1
        str(ciEditLine.displayText())
        monitorEditLine = QtGui.QLineEdit()   #variable 2
        str(monitorEditLine.displayText())
        bolEditLine = QtGui.QLineEdit()       #variable 3
        str(bolEditLine.displayText())
        ipEditLine = QtGui.QLineEdit()        #variable 4
        str(ipEditLine.displayText())

    def create_srv(self):
        try:
                response = client.service.createConfigurationItem(ciEditLine, monitorEditLine, bolEditLine, ipEditLine)
                print response
        except WebFault, e:
                print e


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = StartQT4()
    myapp.show()
    sys.exit(app.exec_())

I am trying to take user input from the 4 LineEdit boxes in my GUI and use them as variables in my function for the web services call. But i am receiving this error.

Traceback (most recent call last):
  File "start.py", line 34, in create_srv
    str(ciEditLine.displayText())
NameError: global name 'ciEditLine' is not defined

ed

This is my first app so go easy thanks.

Any help would be greatly appreciated.

William

Upvotes: 0

Views: 2871

Answers (1)

Ber
Ber

Reputation: 41813

You have to attach you reference to ths widgets to the objects, using self:

def __init__(self):
    ...
    self.ciEditLine = QtGui.QLineEdit()        #variable 1
    ...

Also, you need to pass the text value of the widget, not the widget reference:

def create_srv(self):
    try:
            response = client.service.createConfigurationItem(self.ciEditLine.text(), self.monitorEditLine.text(), self.bolEditLine.text(), self.ipEditLine.text())

Like this these references become attributes to your object and can be referenced later in any method by using self

Upvotes: 1

Related Questions