首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

为什么小弟我运行的这个wxpython小程序界面打不开呢

2012-10-16 
为什么我运行的这个wxpython小程序界面打不开呢Python code# codingutffrom xmlrpclib import ServerProx

为什么我运行的这个wxpython小程序界面打不开呢

Python code
# coding=utffrom xmlrpclib import ServerProxy,Faultfrom server import Node,UNHANDLEDfrom client import  randomStringfrom threading import Threadfrom time import sleepfrom os import listdirimport sysimport wxHEAD_START =0.1 #SecondsSECRET_LENGTH=100class ListableNode(Node):    """    Node的扩展版本,可以列出文件目录中的文件。    """    def list(self):        return listdir(self.dirname)    class Client(wx.App):    """    主客户端类,用于设定GUI,启动为文件服务的Node。        """    def __init__(self,url,dirname,urlfile):        """        创建一个随机的密码,使用这个密码实例化ListableNode,利用它的start方法(确保Thread是个无交互的后台程序,这样它会随着程序退出而退出)启动一个Thread,读取URL文件中的所有URL,并且将Node介绍给这些URL,最后,设置GUI。        """        self.secret=randomString(SECRET_LENGTH)        n=ListableNode(url,dirname,self.secret)        t=Thread(target=n._start)        t.setDaemon(1)        t.start()        #先启动服务器        sleep(HEAD_START)        self.server=ServerProxy(url)        for line in open(urlfile):            line =line.strip()            self.server.hello(line)        #运行GUI        super(Client,self).__init__()        def updateList(self):    """    设置GUI。创建窗体、文体框和按钮,并且进行布局。将提交按钮绑定到self.fetchHandle上。    """    win=wx.Frame(None,title="File Sharing Client",size=(400,300))    bkg=wx.Panel(win)        self.input=input=wx.TextCtrl(bkg);        submit=wx.Button(bkg,label="Fetch",size=(80,25))    submit.Bind(wx.EVT_BUTTON,self.fetchHandler)        hbox=wx.BoxSizer()        hbox.Add(input,proportion=1,flag=wx.ALL | wx.EXPAND,border=10)    hbox.Add(submit,flag=wx.TOP | wx.BOTTON | wx.RIGHT,Border=10)        self.files=files=wx.ListBox(bkg)    self.updateList()    vbox=wx.BoxSizer(wx.VERTICAL)    vbox.Add(hbox,proportion=0,flag=wx.EXPAND)    vbox.Add(files,proportion=1,flag=wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, border=10)        bkg.SetSizer(vbox)        win.show()        return Truedef fetchHandler(self,event):    """    在用户点击‘fetch‘按钮时调用,读取文本框中的查询,调用服务器Node的fetch方法。处理查询之后,调用Updatelist。如果请求设有被处理则打印错误信息。    """    query=self.input.GetValue()    try:        self.server.fetch(query,self.secret)        self.updateList()            except Fault,f:        if f.faultCode !=UNHANDLED: raise        print "Couldn't find the file",query        def main():    urlfile,directory,url =sys.argv[1:]    client=Client(url,directory,urlfile)    client.MainLoop()    if __name__=='__main__': main()    


Node这个不用去管它,请大侠帮我看看,我用一个test测试过wx是没问题的

[解决办法]
在控制台 输入 python test.py(你的py文件绝对路径)看看,如果报错肯定有信息的。
我这看 print sys.argv 才一个元素。

[解决办法]
探讨
我在终端上输入命令没有任何反应

[解决办法]
代码很乱呀咋能跑?貌似updateList和fetchHandler是类方法,不过没缩进。updateList是用来创建窗口控件,也看不出哪里调用过...
[解决办法]
updateList/OnInit/fetchHandler是类方法,缩进要与__init__一致。wxApp类的OnInit是自动调用的,所以一般不用写__init__,把启动服务器的代码挪到OnInit或main里合适的地方...

热点排行