我想从 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