def OnSendClick(self): ## xml creation E = ElementMaker() orderData = E.orderData REASON = E.reason SEVERITY = E.severity if not self.type.get(): self.typeVariable.set("NOT SET") my_doc = orderData( E.header( E.comment(self.headerComment), E.context(self.headerContext), E.organization(self.headerOrganization), E.revision(self.headerRevision), E.source(self.headerSource), E.userid(self.headerUserID), E.verb("create"), E.noun("service order") ), E.iloc( E.buildingName(self.bldgNameVariable.get()), E.buildingNumber(self.bldgNumVariable.get()), E.floor(self.bldgFloorVariable.get()), E.roomNumber(self.bldgRoomVariable.get()) ), E.address( E.general(self.genAddrVariable.get()), E.city(self.townCodeVariable.get()), E.state(self.stateVariable.get()), E.code(self.zipcodeVariable.get()) ), E.reason(self.reasonVariable.get()), E.severity(self.severityVariable.get()), E.type(self.type.get()), E.taskSubject('new task'), E.taskKind(self.taskKind.get()), E.taskStatus(self.taskStatus.get()), E.imageFile(self.imageVariable.get()), E.assetID(self.assetMRIDVariable.get()), E.assetUTC(self.assetUTCVariable.get()) ) self.top2 = tk.Toplevel() text = tk.Text(self.top2,height=8,width=50) text.pack(fill=tk.BOTH,expand=True) text.insert(tk.END,"Sending...") b1 = tk.Button(self.top2,text=u"OK", command=self.top2.destroy) b1.pack(fill=tk.X) self.top2.geometry("300x200") print etree.tostring(my_doc,pretty_print=True) # We're gonna call the java program and then # do a non-blocking read on it print "calling : " + self.url + "ServiceOrderCreate" print "sending : " + etree.tostring(my_doc) self.send = subprocess.Popen(["java", "-jar", "createServiceOrder.jar", self.url + "ServiceOrderCreate", etree.tostring(my_doc)], stdout=subprocess.PIPE) flags = fcntl(self.send.stdout, F_GETFL) fcntl(self.send.stdout, F_SETFL, flags | O_NONBLOCK) def callback(): try: data = read(self.send.stdout.fileno(), 20) dataOut = data text.insert(tk.END,'\n') while True: if data == '': outputResult(dataOut) break data = read(self.send.stdout.fileno(), 1024) dataOut += data except OSError: text.insert(tk.END,'.') self.after(1000, callback) root.after(1000,callback) def outputResult(xmlString): try: rxml = etree.fromstring(xmlString) resultCode = rxml.xpath("//orders/Result")[0].text if resultCode == 'Error': text.insert(tk.END,"Operation Failed:") msg = rxml.xpath("//orders/Reason")[0].text text.insert(tk.END,"\n\n" + msg) else: text.insert(tk.END,"Result : " + rxml.xpath("//orders/Result")[0].text) text.insert(tk.END,"\n\n" + rxml.xpath("//orders/ID")[0].text) print tk.END,"\n\n" + rxml.xpath("//orders/ID")[0].text except: # catch all text.insert(tk.END,"Operation Failed:\n\n" + xmlString);