0

既存のウィンドウのボタンを押して、新しいウィンドウを呼び出そうとしています。新しいウィンドウが作成されると、元のウィンドウが閉じます。ボタンを押すと、期待どおりに新しいウィンドウが表示されますが、さらに空白のウィンドウが表示されます。tk.Tk()orを使用tk.Toplevel()しても同じ結果になります。

プログラムの後半で、作成したウィンドウを再度破棄したいと思います。マウスで空白のウィンドウを閉じると、メソッドが新しいウィンドウに適用されるtk.Tk()ときに「アプリケーションが破棄されました」というエラーが発生します。destroy()

import tkinter as tk
from tkinter import messagebox


def main():

    root = tk.Tk()
    root.title("Hauptmenü")

    Menue = MainMenue(root)
    Menue.pack()

    root.mainloop()


class MainMenue(tk.Frame):
    def __init__(self, parent):
        super().__init__(parent)

        self.button_rennen = tk.Button(self, text="New Window", width=20, command=self.call_bet)
        self.button_rennen.pack()

    def call_bet(self):
        self.destroy()
        root2 = tk.Tk()
        Bet = BetFrame(root2)
        Bet.pack()



class BetFrame(tk.Frame):
    def __init__(self, parent):
        super().__init__(parent)

        self.button = tk.Button(text="Wette platzieren",
                           command=self.question)

        self.button.pack()


    def question(self):
        dialog = tk.messagebox.askokcancel(message="Destroy Window?")

        if dialog is True:
            self.destroy()


main()

元のプログラムはいくつかの変数を返す必要があるため、新しいウィンドウごとに新しいクラスを作成しています。このトピックにはすでに多くの質問があることは知っていますが、私にとってはどれも当てはまらず、問題の解決策を見つけるのに役立ちました. どんな助けにも感謝します!

4

1 に答える 1