PyQt:从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_())
我正在尝试从我的图形界面中的4个输入框获取用户输入,并把这些输入作为变量用于我的网络服务调用。但是我收到了一个错误。
Traceback (most recent call last):
File "start.py", line 34, in create_srv
str(ciEditLine.displayText())
NameError: global name 'ciEditLine' is not defined
ed
这是我做的第一个应用程序,所以请多多包涵,谢谢。
任何帮助都将非常感激。
威廉
1 个回答
1
你需要把你的控件(widgets)和对象关联起来,使用 self
:
def __init__(self):
...
self.ciEditLine = QtGui.QLineEdit() #variable 1
...
另外,你需要传递控件的文本值,而不是控件的引用:
def create_srv(self):
try:
response = client.service.createConfigurationItem(self.ciEditLine.text(), self.monitorEditLine.text(), self.bolEditLine.text(), self.ipEditLine.text())
这样一来,这些引用就变成了你对象的属性,以后在任何方法中都可以通过 self
来引用它们。