我有一個關于按鈕和系結的問題,但如果我告訴你會更好。
from tkinter import Tk,Button
root = Tk()
startbutton = Button(root,text="start button")
pingbutton = Button(root,text="ping button")
startbutton.pack()
pingbutton.pack()
def startenterbind(e):
startbutton.config(relief='sunken')
def startleavebind(e):
startbutton.config(relief='raised')
def pingenterbind(e):
pingbutton.config(relief='sunken')
def pingleavebind(e):
pingbutton.config(relief='raised')
startbutton.bind("<Enter>", startenterbind)
startbutton.bind("<Leave>", startleavebind)
pingbutton.bind("<Enter>", pingenterbind)
pingbutton.bind("<Leave>", pingleavebind)
root.mainloop()
這是我的代碼,現在我想知道,有沒有更好的方法來做到這一點?也許有可能獲得動態懸停的按鈕,然后更改懸停的按鈕?
這樣我就可以對多個按鈕使用一個功能,而只影響被<Enter>“d”或<Leave>“d”的那個?
uj5u.com熱心網友回復:
event您可以通過使用它們傳遞的物件來重用事件處理函式,該物件具有告訴您觸發它的小部件的屬性。
from tkinter import Tk,Button
root = Tk()
startbutton = Button(root,text="start button")
pingbutton = Button(root,text="ping button")
startbutton.pack()
pingbutton.pack()
def startenterbind(event):
event.widget.config(relief='sunken')
def startleavebind(event):
event.widget.config(relief='raised')
startbutton.bind("<Enter>", startenterbind)
startbutton.bind("<Leave>", startleavebind)
pingbutton.bind("<Enter>", startenterbind)
pingbutton.bind("<Leave>", startleavebind)
root.mainloop()
您可以通過撰寫一個函式來更進一步,該函式在呼叫時簡單地切換按鈕的狀態。可以完成的一種方法是使新的浮雕型別取決于它當前是什么,這可以通過呼叫通用小部件cget()方法來確定:
def enterleavebind(event):
new_relief = 'sunken' if event.widget.cget('relief') == 'raised' else 'raised'
event.widget.config(relief=new_relief)
startbutton.bind("<Enter>", enterleavebind)
startbutton.bind("<Leave>", enterleavebind)
pingbutton.bind("<Enter>", enterleavebind)
pingbutton.bind("<Leave>", enterleavebind)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/441031.html
上一篇:在Python中顯示具有透明度且沒有背景或視窗的影像
下一篇:如何更改QR碼的顏色?
