2017-04-06 1 views
1

이 주제에 대한 몇 가지 게시물을 보았으며 제안없이 성공을 거두었습니다. 이미지를 사용하여 tkinter 버튼을 만들고 싶습니다. 아래의 코드는 버튼을 잘 만들지 만,보기 흉한 이미지 너머의 얇은 테두리를 그립니다. 단추 테두리를 제거하려면 어떻게해야합니까? Mac OS X 10.12.3에서 Python 3.5를 사용하고 있습니다.테두리없이 tkinter 이미지 버튼 만들기

여기에 코드입니다 :

여기
from tkinter import * 
from tkinter import ttk 

sDefaultImage = None 

def sStockPileObserver(): 
    print("Button clicked") 

def main(): 
    global sDefaultImage 
    sRoot = Tk() 
    sMainFrame = ttk.Frame(sRoot, padding="3 3 12 12") 
    sMainFrame.grid(column=0, row=0, sticky=(N, W, E, S)) 
    sMainFrame.columnconfigure(0, weight=1) 
    sMainFrame.rowconfigure(0, weight=1) 
    sMainFrame.rowconfigure(2, minsize=85) 
    sDefaultImage = PhotoImage(file='backDimmed.gif') 

    s = ttk.Style() 
    bg = s.lookup('TFrame', 'background') 
    s.configure("SolitaireCard.TButton", borderwidth=0, background=bg, highlightbackground=bg, \ 
          highlightthickness=0, activebackground=bg, activeforeground=bg, padx=0) 
    sStockPileButton = ttk.Button(sMainFrame, image=sDefaultImage, style="SolitaireCard.TButton", width=0, command=lambda: sStockPileObserver()) 
    sStockPileButton.grid(column=1, row=1, sticky=(W, E), padx=0) 
    return sRoot 

sRoot = main() 
sRoot.mainloop() 

그것이 생산하는 것입니다 : 당신이 버튼의 모양을 많이 제어 할 수 없습니다

OSX와 Windows에서

Button shown with thin border

+1

아마도 단추 대신 레이블에 이미지를 넣을 수 있습니다. 나는 그것이 당신에게 국경 스타일을보다 잘 제어 할 수 있다고 생각합니다. "하지만 어떻게 레이블에 마우스 클릭을 감지하겠습니까?"라고 생각한다면, 당신은 그것을위한'bind' 메소드를 사용할 수 있습니다. – Kevin

답변

0

.

하나의 솔루션은 레이블이나 캔버스에서 버튼을 만드는 것입니다. 자신의 바인딩을 추가하여 클릭 수를 처리해야하지만 매우 간단합니다. 대부분의 경우 바인딩은 단순히 테두리를 높이기에서 낮추기로 변경 한 다음 클릭을 마치면 함수를 호출합니다.