[twisted+wxPython] widgets do not work?
Taki Jeden
bartekgorny at interia.pl
Wed Oct 13 05:37:10 EDT 2004
exarkun at divmod.com wrote:
> On Tue, 12 Oct 2004 19:58:38 +0200, Taki Jeden <bartekgorny at interia.pl>
> wrote:
>>
>> Hi
>>
>> Anybody used wxPython with twisted?
>>
>> I started putting together a Twisted-based app with wx GUI, and the
>> widgets just don't work - some controls do not show up etc. - at least on
>> my system.
>>
>> For example, if I just take the wxdemo.py shipped with Twisted, and add
>> to it a static text, it doesn't show - while if I change
>> reactor.registerWxApp(app)
>> reactor.run(0)
>> into
>> app.MainLoop(0)
>> the text is there. What the heck is wrong with this? Or am I doing
>> something wrong? Does the same work at yours?
>>
>> Bartek
>>
>
> There are several known problems with Twisted/wxPython integration, but
> this doesn't sound like one of them. Could you include your modified
> wxdemo.py?
Yes, sure - here it is. In two versions - one is the same wxdemo with a
statictext added, the other is still the same but app.MainLoop instead of
the reactor. The second one works, the first does not.
Version 1:
from wxPython.wx import *
from twisted.internet import wxreactor
wxreactor.install()
from twisted.internet import reactor
# set up so that "hello, world" is printed once a second
def helloWorld():
print "hello, world"
reactor.callLater(1, helloWorld)
reactor.callLater(1, helloWorld)
def twoSecondsPassed():
print "two seconds passed"
reactor.callLater(2, twoSecondsPassed)
ID_EXIT = 101
class MyFrame(wxFrame):
def __init__(self, parent, ID, title):
wxFrame.__init__(self, parent, ID, title, wxDefaultPosition,
wxSize(300, 200))
menu = wxMenu()
menu.Append(ID_EXIT, "E&xit", "Terminate the program")
menuBar = wxMenuBar()
menuBar.Append(menu, "&File");
self.x=wxStaticText(self,-1,'dupadupa')
self.SetMenuBar(menuBar)
EVT_MENU(self, ID_EXIT, self.DoExit)
def DoExit(self, event):
self.Close(true)
reactor.stop()
class MyApp(wxApp):
def OnInit(self):
frame = MyFrame(NULL, -1, "Hello, world")
frame.Show(true)
self.SetTopWindow(frame)
return true
def demo():
app = MyApp(0)
reactor.registerWxApp(app)
reactor.run(0)
if __name__ == '__main__':
demo()
Version 2:
from wxPython.wx import *
from twisted.internet import wxreactor
wxreactor.install()
from twisted.internet import reactor
# set up so that "hello, world" is printed once a second
def helloWorld():
print "hello, world"
#reactor.callLater(1, helloWorld)
#reactor.callLater(1, helloWorld)
def twoSecondsPassed():
print "two seconds passed"
#reactor.callLater(2, twoSecondsPassed)
ID_EXIT = 101
class MyFrame(wxFrame):
def __init__(self, parent, ID, title):
wxFrame.__init__(self, parent, ID, title, wxDefaultPosition,
wxSize(300, 200))
menu = wxMenu()
menu.Append(ID_EXIT, "E&xit", "Terminate the program")
menuBar = wxMenuBar()
menuBar.Append(menu, "&File");
self.x=wxStaticText(self,-1,'dupadupa')
self.SetMenuBar(menuBar)
EVT_MENU(self, ID_EXIT, self.DoExit)
def DoExit(self, event):
self.Close(true)
reactor.stop()
class MyApp(wxApp):
def OnInit(self):
frame = MyFrame(NULL, -1, "Hello, world")
frame.Show(true)
self.SetTopWindow(frame)
return true
def demo():
app = MyApp(0)
app.MainLoop()
#reactor.registerWxApp(app)
#reactor.run(0)
if __name__ == '__main__':
demo()
--
#!/usr/bin/env python
print 'sygnatura'
More information about the Python-list
mailing list