實現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()方法來獲取鼠標的點擊坐標,之后根據鼠標點擊的位置進行相應的反應即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM