Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter画布中的按钮效果_Python_Tkinter_Canvas - Fatal编程技术网

Python tkinter画布中的按钮效果

Python tkinter画布中的按钮效果,python,tkinter,canvas,Python,Tkinter,Canvas,我有以下代码: 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_

我有以下代码:

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)

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

您的代码没有错误,但默认情况下,画布的边框宽度为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()
将tkinter作为tk导入
def压力(事件):
#按下“生成释压效果”按钮
canvas.config(relief='sunken')
def释放(事件):
#当按钮不再按下时,卸下安全阀
canvas.config(relief='flat')
root=tk.tk()
canvas=tk.canvas(根,宽度=20,高度=50,边框宽度=1)
buttonBG1=画布。创建_矩形(0,0,20,50,outline=“”,activefill=”#f1f1')#激活时高亮显示矩形
buttonTXT1=画布。创建文本((10,25),text=“按我”,angle=“90”,font=(“Calibri”,8))
canvas.bind(“,按)
canvas.bind(“,release)
canvas.grid(列=0,行=0)
root.mainloop()

当我添加边框宽度时,它仍然没有给我效果。此外,我不希望画布上有任何轮廓,而borderwidth为我提供了轮廓效果OK,那么如果你不想看到边框,为什么要尝试更改浮雕(浮雕只是一种视觉效果,因为为边框选择的颜色)?你到底想实现什么?我想添加凹陷和凸起的效果,以查看我按下了按钮,但是,最初我不想看到按钮的边框,除非按下。
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()