2016-11-02 24 views
0

天気予報アプリケーションを作成しようとしています。次の7日間、DarkSkyAPIから天気情報を取得するコードセクションがあります。印刷される文字列はSat clear-day 10のようになります。私がしようとしているのは、私がラベルだが、clear-skyアイコンの文字列のclear-skyセクションを置き換えるというテキストを表示することです。私が探していますPython 2:文字列内の単語をアイコンイメージに置き換えます。

フォーマットはSat {icon} 10

from Tkinter import * 
from datetime import timedelta, datetime 
from PIL import Image, ImageTk 
import requests 
import json 

## Location of Icons used 
icon_lookup = { 
    'clear-day'    : "Icons/WeatherIcons/WeatherIcon.png", 

} 

class Weather(Frame): 
    def __init__(self, parent, *args, **kwargs): 
     Frame.__init__(self, parent, bg = 'black') 

     self.iconLbl = Label(self, bg="black") 
     self.iconLbl.grid(row = 0, column = 1, sticky = W) 

     self.icon = '' 

     self.get_weather() 

    def get_weather(self): 
     try: 
      ## Get Week's Weather Values 
      todayPlusOne = 'Sat clear-day 10' 

      ## Get Icon 
      icon_id = 'clear-day' 
      icon2 = None 
      if icon_id in icon_lookup: 
       icon2 = icon_lookup[icon_id] 

      if icon2 is not None: 
       if self.icon != icon2: 
        self.icon = icon2 
        image = Image.open(icon2) 
        image = image.resize((100, 100), Image.ANTIALIAS) 
        image = image.convert('RGB') 
        photo = ImageTk.PhotoImage(image) 

        self.iconLbl.config(image=photo) 
        self.iconLbl.image = photo 
      else: 
       self.iconLbl.config(image='') 


     except Exception as e: 
      print "Error: %s. Cannot get weather." % e 

     self.after(900000, self.get_weather) 

class FullscreenWindow: 
    def __init__(self): 
     self.tk = Tk() 
     self.tk.configure(background='black') 
     self.topFrame = Frame(self.tk, background = 'black', height = 240) 
     self.middleFrame = Frame(self.tk, background = 'black', height = 240) 
     self.bottomFrame = Frame(self.tk, background = 'black', height = 240) 
     self.topFrame.pack(side = TOP, fill = BOTH) 
     self.middleFrame.pack(side = TOP, fill = BOTH) 
     self.bottomFrame.pack(side = TOP, fill = BOTH) 
     self.state = False 
     self.tk.bind('<Return>', self.toggle_fullscreen) 

     #weather 
     self.weather = Weather(self.topFrame) 
     self.weather.pack(side = LEFT, anchor = NW, padx = 25, pady = 25) 

    def toggle_fullscreen(self, event=None): 
     self.state = not self.state 
     self.tk.attributes('-fullscreen', self.state) 
     return 'break'  

if __name__ == '__main__': 
    w = FullscreenWindow() 
    w.tk.resizable(width=False, height=False) 
    w.tk.geometry('720x480') 
    w.tk.mainloop() 

これを行うことは可能ですか?

答えて

1

イメージをラベルのテキストの中央に配置することはできません。片側(上、下、左、右)または中央にのみイメージを置くことができます。テキストとイメージの両方を使用するには、ラベルのcompound属性を使用する必要があります。

  1. は、テキスト、アイコンのラベルのラベル付きフレームを作成し、複数のテキスト
  2. ための別のラベル:

    はテキストの中央にイメージを持っているために、少なくとも3つのオプションがあります
  3. キャンバスを使用し、キャンバスにテキストと画像アイテムを作成する
  4. 埋め込み画像をサポートする1​​行のテキストウィジェットを使用します。
+0

私にお知らせいただきありがとうございます。私はオプション1に行くことに決めました。 – Ross