我想在Tk中創建一個彈出菜單,但是當我到達要顯示菜單的部分(menu.post)時,我得到一個「TclError」例外。我不明白爲什麼,並且當我嘗試進入Tk代碼以查看發生了什麼問題時,在我突然無法再進入代碼並且異常冒出來之前,我只進行了幾個步驟。有人能告訴我我做錯了什麼嗎?我認爲這與我如何創建菜單有關。Python 2.7.x Tkinter彈出菜單拋出tclError
class Bugger(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
# setup window attributes
self.overrideredirect(True)
self.attributes('-topmost', 1)
# set starting positions and values
self.TotalAssigned = "0"
self.TotalResolved = "0"
# add first label
self.label1 = tk.Label(self, text=self.TotalAssigned, bg="red")
self.label1.pack(side="left", fill="both", expand=True)
# add second label
self.label2 = tk.Label(self, text=self.TotalResolved, bg="yellow")
self.label2.pack(side="right", fill="both", expand=True)
# add right-click menu
self.menu = tk.Menu(master=self, tearoff=0)
self.menu.add_command(label="Exit", command=self.ExitMenu)
self.menu.add_command(label="Preferences", command=self.Preferences)
self.bind("<ButtonRelease-2>", self.popup)
def ExitMenu(self):
exit(0)
def popup(self, event):
self.menu.post(event.x_root,event.y_root)
def Preferences(self):
print ("In preferences dialog")
if __name__ == "__main__":
bugger = Bugger()
bugger.mainloop()
的TclError例外發生就行了self.menu.post(event.x_root,event.y_root)
編輯:這是我得到的錯誤。我不知道爲什麼我第一次不包括這個。
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1536, in __call__
return self.func(*args)
File "/Users/robb/source/Bugger.py", line 73, in popup
self.menu.post(event.x_root,event.y_root)
File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 2797, in post
self.tk.call(self._w, 'post', x, y)
TclError
對我有什麼建議?
請顯示錯誤 –
編輯原始評論添加錯誤消息。 – Goishin
如果你創建了[mcve](http://stackoverflow.com/help/mcve),它確實會有所幫助。問題中的大部分代碼不需要重現您的問題,並且_is_必需的代碼缺失。 –