问题描述
我的代码打开一个带有按钮的窗口。当按钮被点击时,一个顶层窗口被创建,根窗口被销毁。单击顶层窗口上的按钮时,会打开一个消息框。我希望在用户按下消息框的确定按钮时关闭顶层窗口。 按 Ok 会导致 TypeError: destroy() missing 1 required positional argument: 'self'
我真的不明白为什么它不起作用,因为顶层窗口作为参数传递给 destroy 方法。
import tkinter as tk
from tkinter import messageBox
def main():
root = tk.Tk()
root.title("Hauptmenü")
mainmenue(root)
root.mainloop()
def mainmenue(root):
button_rennen = tk.Button(root,text="New Window",width=20,command=lambda: call_window(root))
button_rennen.pack()
def call_window(root):
root.destroy()
rframe = tk.Toplevel
button = tk.Button(text="Wette platzieren",command=lambda: question(rframe))
button.pack()
def question(rframe):
dialog = tk.messageBox.askokcancel(message="Destroy Window?")
if dialog is True:
rframe.destroy()
main()
解决方法
def call_window(root):
root.destroy()
rframe = tk.Tk()
button = tk.Button(rframe,text="Wette platzieren",command=lambda: question(rframe))
button.pack()
用 Tk 窗口替换 toplevel,它工作正常。