2014-11-29 6 views
1

tkinter를 사용하여 항목 위젯의 테두리 안에 이미지를 표시하려고합니다. Google에서 검색하려고했지만 성공하지 못 했으므로 어떻게 할 수 있습니까?Tkinter 항목에 이미지 추가

+1

는 "엔트리 위젯"무엇을 의미합니까? 당신이 타이핑하는 지역 안에서 말이야? –

+0

예, 오해 하셔서 죄송합니다. –

답변

1

엔트리 위젯 경계 내에 이미지를 허용하는 기능이나 속성이 없습니다. 그러나 이미지와 엔트리 위젯을 프레임 안에 넣고 엔트리 위젯에서 테두리를 제거하고 엔트리 위젯과 프레임이 동일한 배경색을 갖도록함으로써 매우 쉽게 시뮬레이션 할 수 있습니다.

예 :

import Tkinter as tk 

class Example(tk.Frame): 
    def __init__(self, parent): 
     tk.Frame.__init__(self, parent, background="gray") 

     frame = tk.Frame(background="white", borderwidth=1, relief="sunken", 
         highlightthickness=1) 
     frame.pack(side="top", fill="x", padx=4, pady=4) 

     entry = tk.Entry(frame, borderwidth=0, highlightthickness=0, background="white") 
     entry.image = tk.PhotoImage(data=cancelImageData) 
     imageLabel = tk.Label(frame, image=entry.image) 
     imageLabel.pack(side="right", fill="y") 
     entry.pack(side="left", fill="both", expand=True) 

cancelImageData = ''' 
    R0lGODlhEAAQAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr 
    /wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCq 
    mQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMA 
    MzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV 
    /zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPV 
    mTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYr 
    M2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA 
    /2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/ 
    mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlV 
    M5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq 
    /5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswA 
    mcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyA 
    M8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV 
    /8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8r 
    mf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+q 
    M/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V////AP//M///Zv//mf//zP// 
    /wAAAAAAAAAAAAAAACH5BAEAAPwALAAAAAAQABAAAAiWAPcJHEiwYEFpCBMiNLhP 
    WjZz4CB+A5dN2sGH2TJm+7ax4kCHEOlx3EgPHEeLDc1loydwokB6G1EJlEYRHMt6 
    +1hW/IaSpreN+/ThzIYq5kyKGffV07ePpzSeMzl+UypU6aunMhtSdCcwI0t606A2 
    3PjN3VVXK2NO+/iKIzZp0xB+Q4Xt4re7te4WZSgNVV+EfhkKLhgQADs= 
''' 

if __name__ == "__main__": 
    root = tk.Tk() 
    Example(root).pack(fill="both", expand=True) 
    root.mainloop() 
+0

답장을 보내 주셔서 감사합니다. 너 나 좀 도와 줘! 한 가지 질문이 있습니다. 어떻게 이미지의 텍스트 데이터를 얻었습니까? (cancelImageData 변수) –

+0

@ user3421416 : .gif 파일의 이진 데이터를 base64로 인코딩 한 버전입니다. –

+0

자신의 클래스에서 이것을 구현하고'_tkinter.TclError : image "pyimage1"does not exist "를 얻으려는 사람에게는'tk.PhotoImage'가'master' 인수를 허용한다는 것을 알아 두십시오. [더 많은 정보는 여기에] (http://stackoverflow.com/questions/23224574/tkinter-create-image-function-error-pyimage1-does-not-exist) – Jarad