实现tkinter中button形状改变的方法

  最近在做的一个类似扫雷的小游戏,需要通过点击一些小圆圈使其变色,我的第一个想法就是使用tkinter中的button部件,绑定相应的响应函数使其在被点击时变色,然而tkinter中的button组件默认为矩形,且没有形状属性,无法变更为圆形,经过一番探索,找到了以下两个办法。

一、使用canvas组件

tkinter中自带的一个组件,可以根据输入的参数绘制各种形状,并且可以通过bind方法绑定各种事件及其响应,非常强大。

from tkinter import *


win = Tk()
cv = Canvas(win)
cv.grid()

x1, y1 = 50, 50
r = 50
x2, y2 = x1+2*r, y1+2*r
btn = cv.create_oval(x1, y1, x2, y2, fill='black')


def left1(e):
    cv.itemconfig(btn, fill='red')


def left2(e):
    cv.itemconfig(btn, fill='gold')


def right(e):
    cv.itemconfig(btn, fill='green')


cv.bind('<Button-1>', left1)
cv.bind('<Double-Button-1>', left2)
cv.bind('<Button-3>', right)

win.mainloop()

  以上示例为canvas对象绑定了三个响应事件(左键单击、左键双击、右键单击),关于canvas能响应的更多事件,参考https://blog.csdn.net/DawnRanger/article/details/48770181?locationNum=2&fps=1

二、使用graphic库

graphic库中的windows实际上也是canvas对象,所以可以在上面绘制各种类型的图形,同时graphic库中包含一个getMouse()方法来获取鼠标的点击坐标,之后根据鼠标点击的位置进行相应的反应即可

猜你喜欢

转载自www.cnblogs.com/wendell0829/p/9911908.html