Python Tkinter 销毁顶层 window 缺少参数
Python Tkinter destroy toplevel window missing argument
我的代码打开一个带有按钮的 window。单击按钮时,将创建顶层 window 并销毁根 window。单击顶层 window 上的按钮时,将打开一个消息框。我希望在用户按下消息框的确定按钮时关闭 Toplevel Window。
按确定会导致 TypeError: destroy() missing 1 required positional argument: 'self'
我真的不明白为什么它不起作用,因为顶层 window 作为参数传递给 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 window 并且工作正常。
我的代码打开一个带有按钮的 window。单击按钮时,将创建顶层 window 并销毁根 window。单击顶层 window 上的按钮时,将打开一个消息框。我希望在用户按下消息框的确定按钮时关闭 Toplevel Window。 按确定会导致 TypeError: destroy() missing 1 required positional argument: 'self'
我真的不明白为什么它不起作用,因为顶层 window 作为参数传递给 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 window 并且工作正常。