删除使用图像创建的tkinter按钮的边框

时间:2015-08-17 22:39:38

标签: python tkinter

我已经使用我的程序创建了几个按钮,并且我已经将它们包含在图像中。但是,我希望现在删除剩余的边框(有关屏幕截图,请参阅http://i.imgur.com/XRlmq39.png。)

" back"的代码按钮为例:

backbutton = ttk.Button(mainframe, command=homereturn)
backbuttonimage = PhotoImage(file="back.gif")
backbutton.config(image=backbuttonimage)
backbutton.pack()
backbutton.grid(column=0, row=1)

非常感谢任何帮助。

7 个答案:

答案 0 :(得分:4)

如果使用图像定义自定义按钮,请使用标准按钮类而不是ttk按钮类。这将允许您将borderwidth属性设置为零:

import tkinter as tk
...
backbutton = tk.Button(..., borderwidth=0)

(不相关:调用backbutton.pack()没有意义,并立即跟backbutton.grid(...)关注 - 你只能使用一个用于特定的小部件,而你调用的最后一个是一个这有任何影响。在这种情况下,对pack的调用完全无用)

答案 1 :(得分:4)

backbutton = tk.Button(...,  highlightthickness = 0, bd = 0)

这适用于Python 3.x,我试过......

enter image description here

 icon = PhotoImage(file="lock.png")
 self.company_lock_button = Button(self.control_lock_frame, image = icon, highlightthickness = 0, bd = 0)
 self.day_lock_button = Button(self.control_lock_frame, image = icon)
 self.hour_lock_button = Button(self.control_lock_frame, image = icon)

答案 2 :(得分:1)

您可以使用 highlightthickness=0 和 bd=0

答案 3 :(得分:0)

这是你可以做到的一种方式..

使用ttk.Style()将按钮的背景颜色设置为大型机的颜色。

root_color = "red" #Just an example, can't remember the default tk window color

mainframe = tk.Tk() #or whatever mainframe is
mainframe.configure(bg = root_color)
style = ttk.Style()
style.configure('TButton', background = root_color)
backbutton = ttk.Button(mainframe, command=homereturn)
backbuttonimage=PhotoImage(file="back.gif")
backbutton.config(image=backbuttonimage)
backbutton.pack()
backbutton.grid(column=0, row=1)

作为旁注,您不必在此处的ttk按钮中指定style = ..,因为您正在配置默认的TButton样式ttk使用。如果您为此按钮定义了自定义样式,则必须在按钮的关键字参数中指定它。

一个例子是给你的按钮圆边而不是使用图像来达到预期的效果。

答案 4 :(得分:0)

如果您将导入功能用作:

从tkinter导入*

Button(main_scr,text =“ OK”,bg =“ yellow”,bd = 0,command = delete1).pack()

bd = 0不会显示边框。希望这会有所帮助。

答案 5 :(得分:0)

我在使用图像按钮时遇到了同样的问题。 bd=0highlichtthickness=0 都没有帮助。我什至怀疑 relief 选项可以发挥它的作用。

最终对我有帮助的东西:pady=0, padx=0

所以对于所问的问题:backbutton.config(image=backbuttonimage, highlichtthickness=0, pady=0, padx=0) 可以工作。

答案 6 :(得分:0)

到目前为止提供的所有解决方案都不适用于我的情况。

(我只能怀疑这与最近版本的新 MacOS GUI 样式策略有关(我使用的是 Big Sur)。此外,其他样式选项在 MacOS 上不起作用,例如救济选项没有对按钮外观的任何影响。)

这是我的解决方案:当您将图像放入按钮时,选项 widthheight 以像素为单位。当您选择较小的值(即 10x10)时,边框似乎被图像覆盖。瞧!