Okay, zuerst weiß ich nicht, was das eigentliche Problem hier ist, so dass ich nicht mit einem genaueren Titel kommen konnte. Vielleicht können einige von Ihnen es bearbeiten, um es genau zu machentkinter.TclError: ungültiger Befehlsname "Tabelle"
Das folgende ist der minimalisierte Code, um das Problem zu reproduzieren, das ich habe.
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()
Die cal
und die trabar
sind diese Dateien http://tkinter.unpythonic.net/wiki/TkTableCalendar und https://github.com/Infinidat/infi.systray/blob/develop/src/infi/systray/traybar.py sind.
Wenn Sie dies ausführen, wird ein Symbol in der Taskleiste eines Windows-Computers mit den Optionen Add
und erstellt. Klicken Sie auf die app
öffnet den Kalender, kein Problem. Schließen Sie den Kalender und klicken Sie erneut auf die Add
. Aber diesmal ist es nicht den Kalender öffnet und führt den folgenden Fehler
`
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"
`
Dieses Problem wird nur dann angezeigt, wenn ich SysTrayIcon
verwenden, um mit dem Calendar
.Instead von Calendar
, wenn Sie einfach verwenden Tkinter
Button
oder Label
usw. dieser Fehler doesn nicht erscheinen. Außerdem kann ich das Calendar
Widget normalerweise (ohne die SysTrayIcon
) in einer üblichen Tkinter GUI so oft benutzen, wie ich will, kein Fehler tritt dort auf. Jetzt habe ich keine Ahnung, was hier passiert und wie ich das beheben kann. Welches Problem hat SysTrayIcon
mit Calendar
und warum tritt der Fehler beim ersten Mal nicht auf, wenn ich die GUI öffne? Bitte helfen Sie.
Warum wirft es keinen Fehler beim ersten Mal oder wenn ich das 'Kalender' Widget in einer üblichen Tkinter GUI benutze. – Eular