Python Tkinter 销毁顶级窗口缺少参数

问题描述

我的代码打开一个带有按钮的窗口。当按钮被点击时,一个顶层窗口被创建,根窗口被销毁。单击顶层窗口上的按钮时,会打开一个消息框。我希望在用户按下消息框的确定按钮时关闭顶层窗口。 按 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,它工作正常。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...