这是我的脚本。由于某种原因,它不再工作。它以前做过。有人可以追查任何潜在的错误吗?wxPython脚本挂起不明原因
#! /usr/bin/env python
import wx
import os
TRAY_TOOLTIP = 'jmtpfs mounter'
def create_menu_item(menu, label, func):
item = wx.MenuItem(menu, -1, label)
menu.Bind(wx.EVT_MENU, func, id=item.GetId())
menu.AppendItem(item)
return item
class TaskBarIcon(wx.TaskBarIcon):
def __init__(self):
super(TaskBarIcon, self).__init__()
self.off=wx.IconFromBitmap(wx.Bitmap("android_off.png"))
self.SetIcon(self.off)
self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.on_left_down)
def CreatePopupMenu(self):
menu = wx.Menu()
create_menu_item(menu, 'Mount', self.mount)
create_menu_item(menu, 'UnMount', self.unmount)
menu.AppendSeparator()
create_menu_item(menu, 'Exit', self.on_exit)
return menu
def on_left_down(self, event):
print 'Tray icon was left-clicked.'
def mount(self, event):
retvalue = os.system("jmtpfs ~/Nexus")
print retvalue
self.on=wx.IconFromBitmap(wx.Bitmap("android_on.png"))
self.SetIcon(self.on)
def unmount(self, event):
retvalue = os.system("fusermount -u ~/Nexus")
print retvalue
self.off=wx.IconFromBitmap(wx.Bitmap("android_off.png"))
self.SetIcon(self.off)
def on_exit(self, event):
wx.CallAfter(self.Destroy)
def main():
app = wx.PySimpleApp()
TaskBarIcon()
app.MainLoop()
if __name__ == '__main__':
main()
运行跟踪给出了这样的:
mounter.py(17):self.SetIcon(self.off) --- MODULENAME:_WINDOWS,funcname的:操作SetIcon _windows.py(2174) :返回窗口 .TaskBarIcon_SetIcon(* ARGS,** kwargs) mounter.py(18):self.Bind(wx.EVT_TASKBAR_LEFT_DOWN,self.on_left_down) --- MODULENAME:_Core,funcname的:绑定 _core.py (3916):assert isinstance(event,wx.PyEventBinder) _core.py(3917):断言处理程序是无或可调用的(h (3919):如果源不是无: _core.py(3921):event.Bind(self())();如果源不是None, ,id,id2,handler)
--- modulename:_core,funcname:Bind _core.py(3994):for et in.evtType: _core.py(3995):target.Connect(id1,id2,等,功能) --- MODULENAME:_Core,funcname的:连接 _core.py(3875):返回核心 .EvtHandler_Connect(* ARGS,** kwargs) _core.py(3994):在自我等。 evtType: mounter.py(44):app.MainLoop() --- modulename:_core,funcname:MainLoop _core.py(8010):wx.PyApp.MainLoop(个体经营) --- MODULENAME:_Core,funcname的状态:Mainloop _core.py(7306):返回核心 .PyApp_MainLoop(* ARGS,** kwargs)
它在哪里退出?顺便说一句,你应该阅读PEP8当你有一段时间 – lolopop
我不知道。我不是一个Python程序员,我只是找到一个教程,并编辑我的目的。它曾经工作,但现在它突然没有。我没有更改任何已安装的软件包。我试着让一个init脚本在启动时启动它,但那也行不通。 – tristan202
那么,#1你至少应该试图理解你的系统中的任何代码。盲目拷贝粘贴是一个坏主意。 #2“它不再工作了”是一个非常模糊的问题,没有错误信息,测试用例,甚至只是描述了你期望看到的内容以及你实际看到的内容,那么很不可能我们可以帮助你。你有没有尝试过调试代码? – acattle