1

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

4

0 回答 0