質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2055閲覧

pythonでボタンに画像をつけたい

ZaemonGames

総合スコア5

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/20 11:48

編集2021/06/20 12:19

Tkinterを使ってボタンを作っています。
ボタンに画像を貼り付けようとして、このサイトを参考に作ってみたのですが、
うまくいきません。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "C:\Users*****\起動\1.py", line 8, in <module> dimg = tk.PhotoImage(file=dimgpath) File "C:\Users*****\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 4064, in __init__ Image.__init__(self, 'photo', name, cnf, master, **kw) File "C:\Users*****\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 3997, in __init__ master = _get_default_root('create image') File "C:\Users*****\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 297, in _get_default_root raise RuntimeError(f"Too early to {what}: no default root window") RuntimeError: Too early to create image: no default root window

該当のソースコード

python

1import tkinter 2import tkinter as tk 3import subprocess 4import os 5from tkinter import messagebox 6 7dimgpath = os.path.abspath(os.path.join(os.path.dirname(__file__), "discorlogo.png")) 8dimg = tk.PhotoImage(file=dimgpath) 9 10# click時のイベント 11def btn_click(): 12 subprocess.run("C:\Program Files (x86)\Minecraft Launcher\MinecraftLauncher.exe",shell=True) 13 14# 画面作成 15tki = tkinter.Tk() 16tki.attributes('-fullscreen', True) 17tki.title('ボタンのサンプル') # 画面タイトルの設定 18 19# ボタンの作成 20btn = tkinter.Button(tki, text='ボタン', compound="top", width=120, height=40, command = btn_click) 21btn.place(x=100, y=260) #ボタンを配置する位置の設定 22 23# ボタンの作成 24btn2 = tkinter.Button(tki, text='ボタン2', width=120, height=40, command = btn_click) 25btn2.place(x=1000, y=260) #ボタンを配置する位置の設定 26 27# 画面をそのまま表示 28tki.mainloop() 29

###質問(本題)
サイトによるとこのコードで行けるはずなんでがね。
なんかできません。
どこか間違えているのでしょうか。

絶対パスを割り当てたりしてみましたが無理です。
自分には同じようなエラーに見えました。

補足情報(FW/ツールのバージョンなど)

Python(3.9.5)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/06/20 11:50

で、しつもんはなんでしょうか
ZaemonGames

2021/06/20 12:11

どうやったら画像を貼れますかね
y_waiwai

2021/06/20 12:14

質問文は編集できるんで、あなたの質問を追記しましょう
ZaemonGames

2021/06/20 12:14

ご指摘ありがとうございます
guest

回答1

0

ベストアンサー

エラーメッセージをGoogle翻訳すると

RuntimeError:イメージを作成するには早すぎます:デフォルトのルートウィンドウがありません

です。

中身は知りませんが、

tki = tkinter.Tk()

よりも前に

dimg = tk.PhotoImage(file=dimgpath)

しているのが原因だと読めます。

参考にされている【Python3】tkinterでのボタン上に画像を貼り付ける方法が知りたい では、

root = tk.Tk()

のあとで

img = tk.PhotoImage(file="img.gif")

していますね。

投稿2021/06/20 13:07

ppaul

総合スコア24668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ZaemonGames

2021/06/21 09:14

ありがとうございます! 無事画像が付きました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問