Python 创建一个没有边框的tkinter图像按钮
我看过一些关于这个话题的帖子,并尝试过这些建议,但没有成功。我想使用图像创建一个tkinter按钮。下面的代码创建的按钮很好,但它在图像之外绘制了一个看起来很难看的薄边框。我怎样才能去掉按钮边框?我正在Mac OS X 10.12.3上使用Python 3.5 代码如下:Python 创建一个没有边框的tkinter图像按钮,python,button,tkinter,Python,Button,Tkinter,我看过一些关于这个话题的帖子,并尝试过这些建议,但没有成功。我想使用图像创建一个tkinter按钮。下面的代码创建的按钮很好,但它在图像之外绘制了一个看起来很难看的薄边框。我怎样才能去掉按钮边框?我正在Mac OS X 10.12.3上使用Python 3.5 代码如下: from tkinter import * from tkinter import ttk sDefaultImage = None def sStockPileObserver(): print("Button
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上,您无法控制按钮的外观
一种解决方案是从标签或画布创建按钮。您必须添加自己的绑定来处理单击,但这非常简单。在大多数情况下,绑定只是将边框从升高更改为降低,然后在完成单击后调用函数。在OSX和Windows上,您对按钮的外观没有太多控制权
一种解决方案是从标签或画布创建按钮。您必须添加自己的绑定来处理单击,但这非常简单。在大多数情况下,绑定只是将边框从升高更改为降低,然后在完成单击后调用函数。也许可以将图像放在标签中而不是按钮中。我想这会让你更好地控制边境风格。如果您在想“但是我如何检测标签上的鼠标点击?”,您可以使用
bind
方法。也许您可以将图像放在标签中而不是按钮中。我想这会让你更好地控制边境风格。如果您想“但是如何检测标签上的鼠标点击?”,您可以使用bind
方法。