前提・実現したいこと
Pythonで、ボタンをクリックするとデータをコピーできるアプリを作りました
せっかくなので、ボタンにアイコン画像を表示しようと思いましたが、うまくいきません
前回の質問と似ているので、何とかできそうかもと思ったのですが無理でした
発生している問題・エラーメッセージ
ボタン画像が表示されない。
試したこと
######ボタンをクリックするとデータをコピーできるアプリ
そこに、画像を表示するスクリプトを足して、すべてのボタンで同じ画像を表示することはできました
それが以下です
Python01.py
1import pyperclip 2import tkinter as tk 3 4class MyButton(tk.Button): 5 def __init__(self, title,clipword=None,image=None, master=None): 6 super().__init__(master, width=15, text=title,image=img, compound="top", command=self.button_clicked) 7 self.clipword = clipword 8 self.img = img 9 10 def button_clicked(self): 11 if self.clipword: 12 pyperclip.copy(self.clipword) #ボタンをクリックでデータをコピー 13 14if __name__ == '__main__': 15 #ボタン名、文字列のリスト 16 word_list = [ 17 ["btn0", "data0"], 18 ["btn1", "data1"], 19 ["btn2", "data2"], 20 ] 21 22 #ボタンを生成 23 root = tk.Tk() 24 for info in word_list: 25 img = tk.PhotoImage(file="00.png")#同じ画像なら表示されるが、それぞれ違う画像を表示したい 26 img = img.subsample(5, 5) 27 button = MyButton(*info) 28 button.pack() 29 root.mainloop()
######それぞれのボタンに、違う画像を指定したい(動かない)
まず、配列に、それぞれで表示したい画像を入れました
word_list = [ ["b0", "data0","'00.png'"], ["b1", "data1","'01.png'"], ["b2", "data2","'02.png'"], ]
そして、
img = tk.PhotoImage(file="00.png")
の部分を書き換えて、
img = tk.PhotoImage(file=str(info[2]))
こうすれば、画像が表示されるかなと思ったのですが、_tkinter.TclError: couldn't open "'00.png'": no such file or directoryというエラーが出てだめでした
###失敗だったコード
import pyperclip import tkinter as tk class MyButton(tk.Button): def __init__(self, title,clipword=None,image=None, master=None): super().__init__(master, width=15, text=title,image=img, compound="top", command=self.button_clicked) self.clipword = clipword self.img = img def button_clicked(self): if self.clipword: pyperclip.copy(self.clipword) #ボタンをクリックでデータをコピー if __name__ == '__main__': #ボタン名、文字列のリスト word_list = [ ["b0", "data0","'00.png'"], ["b1", "data1","'01.png'"], ["b2", "data2","'02.png'"], ] #ボタンを生成 root = tk.Tk() for info in word_list: # img = tk.PhotoImage(file="") print(str(info[2]))#printでは、'00.png' '01.png' '02.png'が出力されるのに、 img = tk.PhotoImage(file=str(info[2]))# <- こうすると、str(info[2])に画像が入らない??? #_tkinter.TclError: couldn't open "'00.png'": no such file or directoryとなる img = img.subsample(5, 5) button = MyButton(*info) button.pack() root.mainloop()
どうしたら配列に入れた画像を表示することができますか?
補足情報(FW/ツールのバージョンなど)
Python
回答1件
あなたの回答
tips
プレビュー