(急いでいるとハッシュタグにスキップ) このプログラムは、表示されている画像上で終了する場合にのみ機能します。 私はそれを別のループプログラム内の関数として使いたいが、うまくいきません。それはポケモン(p.whatever)の統計を表示しますが、イメージは表示されません。画像はIDLE Python 3.4では表示されますが、端末では表示されません。私は数ヶ月間これに固執してきました。イメージはループに表示されません。なぜそうではありませんか?
import pykemon
print('What are you looking for?')
askedpokemon = input()
pokemonInDatabase = False
while pokemonInDatabase == False:
pokemonInDatabase = True
try:
if ('1' in askedpokemon) or ('2' in askedpokemon) or ('3' in askedpokemon) or ('4' in askedpokemon) or ('5' in askedpokemon) or ('6' in askedpokemon) or ('7' in askedpokemon) or ('8' in askedpokemon) or ('9' in askedpokemon):
p = (pykemon.get(pokemon_id = askedpokemon))
else:
askedpokemon = askedpokemon.lower()
p = (pykemon.get(pokemon = askedpokemon))
#Turns askedpokemon into number
askedpokemon = p.resource_uri
askedpokemon = askedpokemon.replace('/api/v1/pokemon/',' ')
askedpokemon = askedpokemon.replace('/',' ')
askedpokemon = askedpokemon.strip()
except pykemon.exceptions.ResourceNotFoundError:
print(askedpokemon + " is not a valid Pokemon name or id number.")
print('Try another')
askedpokemon = input()
pokemonInDatabase = False
print (p)
pTypes = (p.types)
for key, value in pTypes.items() :
pTypes = str(key)
print (' Type: ' + pTypes)
print (' HP: ' + str(p.hp))
print (' Attack: ' + str(p.attack))
print ('Defense: ' + str(p.defense))
print (' Sp Atk: ' + str(p.sp_atk))
print (' Sp Def: ' + str(p.sp_def))
print (' Speed: ' + str(p.speed))
print ('Exp Yield: ' + str(p.exp))
#######################################################
import time
import urllib
import urllib.request
import tkinter as tk
root = tk.Tk()
url = "http://assets22.pokemon.com/assets/cms2/img/pokedex/full/526.png"
if len(askedpokemon) < 3:
if len(askedpokemon) == 2:
askedpokemon = ('0' + askedpokemon)
if len(askedpokemon) == 1:
askedpokemon = ('00' + askedpokemon)
url = url.replace('526', askedpokemon)
u = urllib.request.urlopen(url)
raw_data = u.read()
u.close()
import base64
b64_data = base64.encodestring(raw_data)
image = tk.PhotoImage(data=b64_data)
label = tk.Label(image=image)
label.pack()
##########################################################
以下はそのモジュールでの作業プログラムである:ここで
は、(IDLEはPython 3.4ではなく、ターミナルで)働くプログラムです。ここでhttps://drive.google.com/file/d/0B3Q4wQpL0nDUYWFFSjV3cUhXVWc/view?usp=sharing
これは問題のhttp://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htmでしょう。 SOには100,000箇所のうちの1つがあります:http://stackoverflow.com/a/15216402/2329988そうではないかもしれませんが、それは確かです:) –
@en_Knight:コードには、リンクに指定されている必須の 'image = tk.PhoteImage(...)'があります。問題は、コードに 'root.mainloop()'がないか、コマンドラインで '-i'が欠けていることです。 –
@TerryJanReedyあなたは問題が何であるかをわかってうれしいです。私は彼が画像へのリンクを保存していないことを意味し、tkは弱い参照しか使用しないので、画像はフレームスタックフレームが落とされたときにgc'dすることができます。しかし、私はOPがあなたの答えを受け入れたのでここには起こっていないと思います。 –