2013-04-02 15 views
5

イメージの上にテキストを表示しようとしていますが、これを行うことはできません。私のtkinterイメージ上にテキストを表示することができません

コード:

# 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 

答えて

7

ラベルのコンストラクタは、パラメータcompoundをとります。コンストラクタをイメージとテキストの両方に渡し、をTkinter.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を除き、上記と同じコードを使用できます。

関連する問題