tkinter画布中的按钮效果

2024-06-25 05:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

canvas = tk.Canvas(frame, width=20, height=50)
buttonBG1 = canvas.create_rectangle(0, 0, 20, 50, outline="")
buttonTXT1 = canvas.create_text((10, 25), text="Press Me", angle='90', font=("Calibri", 8))
canvas.tag_bind(buttonBG1, "<ButtonPress-1>")
canvas.tag_bind(buttonTXT1, "<ButtonRelease-1>", press) # press is the command function 
canvas.grid(column=0, row=0)

我的问题是关于如何给我正在创建的按钮(没有轮廓)添加效果。我知道我可以通过以下方式添加:

.configure(relief=“sunken”)

.configure(relief=“raised”)

但是,当我以这种方式将其添加到代码中时,它不起作用:

canvas.configure(relief="sunken")
canvas.configure(relief="raised")

它没有给出任何错误,但它没有给出应有的效果。我的代码有什么问题


Tags: 代码textbindconfiguretagcreate方式canvas
1条回答
网友
1楼 · 发布于 2024-06-25 05:22:29

代码没有错误,但默认情况下,画布的边框宽度为0,因此浮雕效果不可见。为了能够看到它们,您需要将边框宽度设置为至少1

在下面的示例中,我还使用矩形的activefill选项在光标位于矩形上时高亮显示它

import tkinter as tk

def press(event):
    # make relief effect button is pressed
    canvas.config(relief='sunken')

def release(event):
    # remove relief when button is no longer pressed
    canvas.config(relief='flat')  

root = tk.Tk()
canvas = tk.Canvas(root, width=20, height=50, borderwidth=1)
buttonBG1 = canvas.create_rectangle(0, 0, 20, 50, outline="", activefill='#F1F1F1')  # highlight rectangle when active
buttonTXT1 = canvas.create_text((10, 25), text="Press Me", angle='90', font=("Calibri", 8))
canvas.bind("<ButtonPress-1>", press)
canvas.bind("<ButtonRelease-1>", release)
canvas.grid(column=0, row=0)
root.mainloop()

相关问题 更多 >