2017-04-06 123 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() 

這裏是它產生:

Button shown with thin border

+1

也許你可以把圖像放在Label而不是Button中。我懷疑這會讓你更好地控制邊框風格。如果您在考慮「但是如何檢測標籤上的鼠標點擊?」,您可以使用'bind'方法。 – Kevin

回答

0

在OSX和Windows,你沒有對按鈕的外觀太多的控制。

一種解決方案是從標籤或畫布創建按鈕。你必須添加自己的綁定來處理點擊,但這很簡單。大多數情況下,綁定只是將邊框從提升到降低,然後在完成點擊後調用函數。