“如何修复”;can';t调用按钮命令";在python中使用tkinter

“如何修复”;can';t调用按钮命令";在python中使用tkinter,python,button,tkinter,Python,Button,Tkinter,我第一次尝试在python fo中使用tkinter,但是Button命令创建了一个错误 从tkinter导入* RandomWindow=Tk() Close=RandomWindow.destroy() 随机按钮=按钮(随机窗口,text=“单击洗牌并选择卡片”,命令=关闭) RandomButton.pack() 它应该创建一个带有按钮的窗口,但我刚刚收到错误消息 \u tkinter.TclError:无法调用“按钮”命令:应用程序已被销毁 您已经销毁了分配给RandomWindow.

我第一次尝试在python fo中使用tkinter,但是Button命令创建了一个错误

从tkinter导入*
RandomWindow=Tk()
Close=RandomWindow.destroy()
随机按钮=按钮(随机窗口,text=“单击洗牌并选择卡片”,命令=关闭)
RandomButton.pack()
它应该创建一个带有按钮的窗口,但我刚刚收到错误消息

\u tkinter.TclError:无法调用“按钮”命令:应用程序已被销毁

您已经销毁了分配给
RandomWindow.destroy()
关闭的窗口

以下是您可能的意思:

def Close(): RandomWindow.destroy()

使用它而不是
Close=RandomWindow.destroy()
您已经破坏了将
RandomWindow.destroy()
分配给
Close
的窗口

以下是您可能的意思:

def Close(): RandomWindow.destroy()
使用该选项,而不是
Close=RandomWindow.destroy()

Close = RandomWindow.destroy() 
实际上,您正在调用窗口的
destroy
方法,因此当您点击下一行时:

RandomButton = Button(RandomWindow, ...)
您正在将一个已破坏的窗口传递给按钮,因此出现错误

你想要:

Close = RandomWindow.destroy # no parens, just reference the method
RandomButton = Button(
    RandomWindow, 
    text="Click to shuffle and select cards", 
    command=Close
) 
或者更简单地说:

RandomButton = Button(
    RandomWindow, 
    text="Click to shuffle and select cards", 
    # no parens, just reference the method
    command=RandomWindow.destroy
 ) 
在这里:

实际上,您正在调用窗口的
destroy
方法,因此当您点击下一行时:

RandomButton = Button(RandomWindow, ...)
您正在将一个已破坏的窗口传递给按钮,因此出现错误

你想要:

Close = RandomWindow.destroy # no parens, just reference the method
RandomButton = Button(
    RandomWindow, 
    text="Click to shuffle and select cards", 
    command=Close
) 
或者更简单地说:

RandomButton = Button(
    RandomWindow, 
    text="Click to shuffle and select cards", 
    # no parens, just reference the method
    command=RandomWindow.destroy
 ) 

Python函数和方法是对象(只是普通变量),所以关闭函数是无用的。Python函数和方法是对象(只是普通变量),所以关闭函数是无用的。