既存のウィンドウのボタンを押して、新しいウィンドウを呼び出そうとしています。新しいウィンドウが作成されると、元のウィンドウが閉じます。ボタンを押すと、期待どおりに新しいウィンドウが表示されますが、さらに空白のウィンドウが表示されます。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()
元のプログラムはいくつかの変数を返す必要があるため、新しいウィンドウごとに新しいクラスを作成しています。このトピックにはすでに多くの質問があることは知っていますが、私にとってはどれも当てはまらず、問題の解決策を見つけるのに役立ちました. どんな助けにも感謝します!