好的,首先我不知道这里的实际问题是什么,所以我想不出更准确的标题。也许你们中的一些人可以编辑它以使其准确
以下是重现我遇到的问题的最小化代码。
from traybar import SysTrayIcon
from cal import Calendar
import Tkinter
class Add():
def __init__(self,master):
Calendar(master).pack()
def add(systray):
root = Tkinter.Tk()
Add(root)
root.mainloop()
SysTrayIcon("abc.ico","abc", (('Add',None, add), ) ,default_menu_index=0).start()
这些文件分别是http://tkinter.unpythonic.net/wiki/TkTableCalendarcal
和https://github.com/Infinidat/infi.systray/blob/develop/src/infi/systray/traybar.py。trabar
如果你运行它,它将在 Windows 机器的系统托盘中创建一个图标,其中包含选项Add
和Quit
. 点击app
打开日历,没问题。Add
关闭日历并再次单击。但是这次它没有打开日历并抛出以下错误
`
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 314, in 'calling callback function'
File "C:\Users\Koushik Naskar\AppData\Roaming\Python\Python27\site-packages\traybar.py", line 79, in WndProc
self._message_dict[msg](hwnd, msg, wparam.value, lparam.value)
File "C:\Users\Koushik Naskar\AppData\Roaming\Python\Python27\site-packages\traybar.py", line 276, in _command
self._execute_menu_option(id)
File "C:\Users\Koushik Naskar\AppData\Roaming\Python\Python27\site-packages\traybar.py", line 283, in _execute_menu_option
menu_action(self)
File "C:\Users\Koushik Naskar\Desktop\So\temp.py", line 11, in add
Add(root)
File "C:\Users\Koushik Naskar\Desktop\So\temp.py", line 7, in __init__
Calendar(master).pack()
File "C:\Users\Koushik Naskar\Desktop\So\cal.py", line 66, in __init__
state='disabled', browsecommand=self._set_selection)
File "C:\Python27\lib\lib-tk\tktable.py", line 118, in __init__
Tkinter.Widget.__init__(self, master, 'table', kw)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2090, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: invalid command name "table"
`
此问题仅在我使用时SysTrayIcon
出现。而Calendar
不是Calendar
如果您使用简单Tkinter
Button
等Label
,则不会出现此错误。此外,我可以在通常的 Tkinter GUI 中Calendar
正常使用小部件(没有SysTrayIcon
),只要我愿意,就不会出现错误。现在我对这里发生的事情以及如何解决这个问题一无所知。SysTrayIcon
有什么问题Calendar
以及为什么我第一次打开 GUI 时没有发生错误?请帮忙。