Tkinter 自定义创建按钮

Posted

技术标签:

【中文标题】Tkinter 自定义创建按钮【英文标题】:Tkinter custom create buttons 【发布时间】:2016-12-27 12:10:03 【问题描述】:

tkinter 可以从这样的图像或图标创建自定义按钮吗?

【问题讨论】:

是的,您可以创建带有图像和文本的按钮,或者只是图像,带有或不带有凸起的边框,以及您想要的任何颜色。所有这些都记录在按钮小部件的选项中。 【参考方案1】:

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

因此,如果您希望您的 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()

给出:

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

【讨论】:

我无法获取此 tkinter_custom_button,如何安装?我确实使用 Linux。 你可以点击链接找到文件,要下载它你必须下载整个GitHub存储库,然后你可以在/documentation下找到它。要使用它,只需将其放在您的 .py 文件旁边,然后您就可以导入它。 好的,谢谢。认为只有示例如何使用它。谢谢 这非常适合我的需要。你能告诉我如何用图像替换文本吗?我试过了,但它没有显示图像。 我添加了将图像放在TkinterCustomButton 上的选项。在 /test_custom_button.py 文件中,我将播放按钮图像添加到按钮 7 作为示例。您必须导入 Pil,加载图像,将其转换为 PhotoImage,然后使用参数 image 将其传递给 TkinterCustomButton【参考方案2】:

有可能!

如果您查看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()

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

【讨论】:

以上是关于Tkinter 自定义创建按钮的主要内容,如果未能解决你的问题,请参考以下文章

单击时如何将按钮值从自定义小部件传递到 tkinter 中的主应用程序

如果有 0 或 1 个项目,如何创建没有箭头的自定义 tkinter 组合框?

如何自定义 tkinter/ttk 小部件和框架的边框颜色?

在 PySimpleGui 中创建自定义按钮

如何在 tkinter 中创建一个自调整大小的按钮网格?

使用LeftBarButtonItems ios中的自定义按钮创建默认后退按钮