Tkinter自定义创建按钮

时间:2016-08-20 12:28:42

标签: python button tkinter python-3.5

可以从图像或图标中删除自定义按钮 像这样 enter image description here

enter image description here

tkinter有正常按钮我不想添加图像按钮 我想创建一个新的按钮或样式enter image description here

3 个答案:

答案 0 :(得分:10)

这是可能的!

如果您查看button documentation,则可以使用图像显示在按钮上。

例如:

from tkinter import *

root = Tk()

button = Button(root, text="Click me!")
img = PhotoImage(file="C:/path to image/example.gif") # make sure to add "/" not "\"
button.config(image=img)
button.pack() # Displaying the button

root.mainloop()

这是一个将图像添加到按钮小部件的简化示例,您可以使用按钮小部件制作更多很酷的内容。

答案 1 :(得分:6)

对于一个 Tkinter 项目,我在 TkinterCustomButton 之上创建了一个 tkinter.Frame 类构建。它在 tkinter.Canvas 上绘制所有形状。您可以像普通的 tkinter.Button 一样使用它,但它是高度可定制的。您可以更改角半径、边框宽度和所有颜色:

Tkinter modern rounded custom buttons

因此,如果您希望 tkinter 按钮看起来像问题中的示例一样定制且更现代,则并不总是需要使用图像。

虽然这并不能真正回答问题,但也许这个例子对某人有帮助。

您可以在此处找到 TkinterCustomButton 类和示例程序: https://github.com/TomSchimansky/GuitarTuner/tree/master/documentation

最简单的例子是:

import tkinter
from tkinter_custom_button import TkinterCustomButton

app = tkinter.Tk()
app.geometry("300x200")
app.title("TkinterCustomButton")

def button_function():
    print("Button pressed")

button_1 = TkinterCustomButton(text="My Button", corner_radius=10, command=button_function)
button_1.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)

app.mainloop()

给出:

enter image description here

在 Windows 上我体验到 tkinter 画布的渲染质量非常糟糕,所以圆形,尤其是细边框看起来不太好......

答案 2 :(得分:0)

您可以将图像放置在.py根文件夹中并使用

img = PhotoImage(file="example.gif") # make sure to add "/" not "\"

因为我正在使用Raspberry Pi,并且不确定设置图像文件路径的正确语法。因此,我正在考虑将其放入同一文件夹并尝试。