2017-04-06 134 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,你没有对按钮的外观太多的控制。

一种解决方案是从标签或画布创建按钮。你必须添加自己的绑定来处理点击,但这很简单。大多数情况下,绑定只是将边框从提升到降低,然后在完成点击后调用函数。