为什么在Python 3.6的tkinter菜单中调用askinteger时会发生自动释放池错误?

时间:2018-04-07 07:14:07

标签: tkinter python-3.6 simpledialog

我想从Python 3.6.3中的tkinter菜单调用askinteger()。当我这样做时,出现对​​话框,我可以输入答案,但是当我关闭对话框时,我得到一个自动释放池错误,并且脚本退出。当我从一个按钮调用相同的方法时,它工作正常。

import tkinter as tk
from tkinter.simpledialog import askinteger

def age_input():
    age_input = askinteger("Pop up", "Enter age")
    print(age_input if age_input != "" else "<empty>")

win = tk.Tk()
win.geometry("300x200")

menubar = tk.Menu(win)
dropDown = tk.Menu(menubar, tearoff = 0)
dropDown.add_command(label = "Get Age", command = age_input)
menubar.add_cascade(label = "Drop Down", menu = dropDown)
win.config(menu = menubar)

button = tk.Button(win, text="Get Age", command = age_input).pack()

win.mainloop()

这是错误。

objc[15253]: Invalid or prematurely-freed autorelease pool 0x7fe0de82f050.
Abort trap: 6

请注意,当我使用Python 2.7运行脚本时(对tkinter名称进行了适当的更改),当从菜单和按钮调用时,askinteger正确运行。

我使用的是Mac OS X 10.13.3

0 个答案:

没有答案