RuntimeError: Too early to create dialog window: no default root window

Python
本ページはプロモーションが含まれています

はじめに

今回はPythonでtkinterを使っている時に起きたエラーについてです。
PythonでGUI系はほとんど触ったことがなく詰まりました。
今回はその時にの原因や手順などについてメモを残すことにしました。

サンプルプログラムや簡単なTkinterの解説も入れましたのでよければ参考にしてください。

エラーの原因と対処法

エラー

まず発生したエラーですが、

RuntimeError: Too early to create dialog window: no default root window

というものです。
日本語で訳すと
「RuntimeError: ダイアログウィンドウを作成するのは早すぎます: デフォルトのルートウィンドウがありません」
となります

原因とサンプルソース

原因

このエラーは、Tkinterを使用してGUIアプリケーションを作成する際に発生することが多いみたいです。ウィンドウやダイアログボックスを生成する前に、ルートウィンドウ(親ウィンドウ)がまだ生成されていないときにこのエラーが発生します。

今回のエラーの原因はTkinterのルートウィンドウ(親ウィンドウ)がまだ生成されていない状態で、他のウィンドウやダイアログボックスを生成しようとした事によって発生しました。

対処方法

まずルートウィンドウを生成し、その後に他のウィンドウやダイアログボックスを生成するようにします。

エラーが発生するソースコード

具体的な例をみます。まずは今回のエラーが表示されるサンプルソースコードです。

import tkinter as tk
from tkinter.simpledialog import askstring

# ルートウィンドウの初期化を行う前にダイアログを表示しようとする
result = askstring("Input", "Enter something:")

# ルートウィンドウの作成
root = tk.Tk()
root.mainloop()

これを実行すると

・
(省略)
・ raise RuntimeError(f"Too early to {what}: no default root window")
RuntimeError: Too early to create dialog window: no default root window

とエラーメッセージが表示されます。

修正したソースコード

次に修正を行ったソースコードです。

import tkinter as tk
from tkinter.simpledialog import askstring

# ルートウィンドウの作成
root = tk.Tk()

# ダイアログを表示する
result = askstring("Input", "Enter something:")

root.mainloop()

これを実行するとテキストボックスに入力を行えるダイアログが表示されます。

さいごに

今回はTkinterでのエラーについてでした。
GUIを簡単に作って使う何てことが便利ですので基本的な使い方は知っておくと便利ですね。

この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。

タイトルとURLをコピーしました