【问题标题】:Create a tkinter image button without a border创建一个没有边框的 tkinter 图像按钮
【发布时间】:2017-09-01 17:15:39
【问题描述】:

我看过一些关于这个主题的帖子,并尝试了这些建议但没有成功。我想使用图像创建一个 tkinter 按钮。下面的代码很好地创建了按钮,但它在看起来很难看的图像之外绘制了一个细边框。如何摆脱按钮边框?我在 Mac OS X 10.12.3 上使用 Python 3.5。

代码如下:

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()

这是它产生的结果:

【问题讨论】:

  • 也许您可以将图像放在标签而不是按钮中。我怀疑这会让你更好地控制边框样式。如果您在想“但我如何检测标签上的鼠标点击?”,您可以使用 bind 方法。

标签: python button tkinter


【解决方案1】:

在 OSX 和 Windows 上,您无法控制按钮的外观。

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

【讨论】:

    猜你喜欢
    • 2017-06-15
    • 2023-02-21
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2022-11-26
    • 2013-06-11
    • 2018-10-09
    相关资源
    最近更新 更多