seg fault
Ajay
abra9823 at mail.usyd.edu.au
Thu Nov 4 09:06:07 EST 2004
hi!
i have some code with a gui that does some processing in another thread,
say t2.
when t2 needs to display something on the gui, it generates an event (which
i have binded earlier). the code runs fine on windows but segfaults on
linux.
the point where it segfaults is when it generates the event.
any ideas why?
the code is
#app.py
import sys
sys.path.append('\\Program Files\\Python\\Lib\\python23.zip\\lib-tk')
sys.path.append('/n/filer1/u1/hons2004/rwhitake/elvin/local/usr/lib/python2.3/site-packages/')
import os
from Tkinter import *
import tkMessageBox
import tkFileDialog
import tkSimpleDialog
from Queue import Queue
from time import localtime
import threading
import elvin
class Phone:
def __init__(self, master):
self.frame = Frame(master)
self.frame.pack()
Label(self.frame, text="Enter message", justify=LEFT).grid(row=0)
self.entryMessage = Entry(self.frame, width=25)
self.entryMessage.grid(row=1, column=0)
Button(self.frame, text="Send", command=self.sendMessage).grid(row=4,
column=0)
v_scrollbar = Scrollbar(self.frame, orient=VERTICAL)
v_scrollbar.grid(row=5, column=1, sticky=N+S)
h_scrollbar = Scrollbar(self.frame, orient=HORIZONTAL)
h_scrollbar.grid(row=6, column=0, sticky=E+W)
self.answerText = Text(self.frame, width=25, height=15,
xscrollcommand=h_scrollbar.set, yscrollcommand=v_scrollbar.set)
self.answerText.grid(row=5, column=0, sticky=N+S+E+W)
self.answerText.config(state=DISABLED)
self.q = Queue()
self.reply=""
self.frame.bind("<<reply>>", self.displayReply)
self.phnumber = tkSimpleDialog.askstring("Phone number", "Enter
phonenumber", parent=self.frame)
if self.phnumber is None:
sys.exit(0)
self.th = threading.Thread(target=self.setElvin)
self.th.start()
def setElvin(self):
elvin_con = elvin.connect("elvin://praxis.it.usyd.edu.au")
sub = elvin_con.subscribe("equals(type, 'FREEVO_SMS_REPLY')")
sub.add_listener(self.answerMessage)
sub.register()
elvin_con.run()
def sendMessage(self):
message = self.entryMessage.get()
if message == "":
tkMessageBox.showerror("Error", "Enter message", parent=self.frame)
return
offset = "+1000"
t=localtime()
date=str(t.tm_mday) + "/" + str(t.tm_mon) + "/" + str(t.tm_year)
time=str(t.tm_hour) + ":" + str(t.tm_min) + ":" + str(t.tm_sec)
con = elvin.connect("elvin://praxis.it.usyd.edu.au")
con.notify(type="FREEVO_SMS", SMSSource=self.phnumber,
SMSDestination="foo", SMSDate=date, SMSTime=time, SMSGMTOffset=offset,
SMSText=message)
def answerMessage(self, sub, msg, insec, rock):
print msg
self.reply = msg.get("SMSMessage")
dest = msg.get("SMSDestination")
if dest == self.phnumber:
self.frame.event_generate('<<reply>>', when='tail')
def displayReply(self, event=None):
self.answerText.config(state=NORMAL)
self.answerText.insert(INSERT, self.reply+"\n\n")
self.answerText.config(state=DISABLED)
root = Tk()
phone = Phone(root)
root.mainloop()
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
More information about the Python-list
mailing list