問題

私は私の画像の上にテキストを表示しようとしていますが、私はこれを行うことはできません、誰でも助けてください。

コード:

 # import Image and the graphics package Tkinter
import Tkinter
import Image, ImageTk

class simpleapp_tk(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()

    def initialize(self):
##    def create_widgets(self):
        # create welcome label
        label1 = Tkinter.Label(self, text = "Update User")
        label1.grid(row = 0, column = 1, columnspan = 2, sticky = 'W')

# open a SPIDER image and convert to byte format
im = Image.open('C:\Users\JOHN\Desktop\key.jpg')

root = Tkinter.Tk()  # A root window for displaying objects

 # Convert the Image object into a TkPhoto object
tkimage = ImageTk.PhotoImage(im)

Tkinter.Label(root, image=tkimage).pack() # Put it in the display window

root.mainloop() # Start the GUI
 

  ベストアンサー

Labelコンストラクタはパラメータcompoundをとります。コンストラクタをイメージとテキストの両方に渡し、compoundTkinter.CENTERとして渡してテキストをイメージに重複させます。この機能のドキュメントは、 http://effbot.org/tkinterbook/label.htm

 import Tkinter
import Image, ImageTk

# open a SPIDER image and convert to byte format    
im = Image.open(r'C:\Users\JOHN\Desktop\key.jpg')

root = Tkinter.Tk()  # A root window for displaying objects

# Convert the Image object into a TkPhoto object
tkimage = ImageTk.PhotoImage(im)

Tkinter.Label(root, image=tkimage, text="Update User", compound=Tkinter.CENTER).pack() # Put it in the display window

root.mainloop() # Start the GUI
 

また、パックとグリッドを混在させることになっていないことに注意してください。どちらか一方を選択する必要があります。参照: http://effbot.org/tkinterbook/grid.htm

P.S.テキストを画像よりも垂直に高くしたい場合は、compound=Tkinter.BOTTOMを設定する以外は、上記と同じコードを使用できます。

  同じタグがついた質問を見る

pythonimagepython-2.7tkinterpython-imaging-library