【发布时间】:2012-08-30 03:43:11
【问题描述】:
这是我的脚本。由于某种原因,它不再起作用了。它以前做过。有人可以追踪任何潜在的错误吗?
#! /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)
--- 模块名:_windows,函数名:SetIcon
_windows.py(2174): 返回 windows.TaskBarIcon_SetIcon(*args, **kwargs)
mounter.py(18): self.Bind(wx.EVT_TASKBAR_LEFT_DOWN, self.on_left_down)
--- 模块名:_core,函数名:绑定
_core.py(3916): 断言 isinstance(事件, wx.PyEventBinder)
_core.py(3917):断言处理程序是无或可调用的(处理程序)
_core.py(3918): 断言源为 None 或 hasattr(source, 'GetId')
_core.py(3919):如果源不是无:
_core.py(3921): event.Bind(self, id, id2, handler)
--- 模块名:_core,函数名:绑定
_core.py(3994): for et in self.evtType:
_core.py(3995): target.Connect(id1, id2, et, 函数)
--- 模块名:_core,函数名:连接
_core.py(3875): 返回 core.EvtHandler_Connect(*args, **kwargs)
_core.py(3994): for et in self.evtType:
mounter.py(44): app.MainLoop()
--- 模块名:_core,函数名:MainLoop
_core.py(8010): wx.PyApp.MainLoop(self)
--- 模块名:_core,函数名:MainLoop
_core.py(7306): 返回 core.PyApp_MainLoop(*args, **kwargs)
【问题讨论】:
-
它从哪里退出?顺便说一句,你应该在有时间的时候阅读 PEP8
-
我不知道。我不是python程序员,我只是找到了一个教程,并根据我的目的进行了编辑。以前可以用,现在突然不行了。我没有更改任何已安装的软件包。我尝试制作一个初始化脚本以在启动时启动它,但这也不起作用。
-
好吧,#1,您至少应该尝试理解您放入系统中的任何代码。盲目复制粘贴是个坏主意。 #2 “它不再起作用”是一个非常模糊的问题,没有错误消息、测试用例,甚至只是对您期望看到的内容和实际看到的内容的描述,那么我们很难为您提供帮助.您是否尝试过调试代码?