按 钮 A 与 按 钮 B 交 替 变 换
from tkinter import *root=Tk()
m=PhotoImage(file="e://A.png")
n=PhotoImage(file="e://B.png")
b=Button(root,
relief="ridge",
borderwidth=11)
b.pack()
def a():
if b.cget("image") == m :
b.config(image=n)
else :
b.config(image=m)
b.after(3000,a)
a()
mainloop()
如 何 实 现 按 钮 A 与 按 钮 B 交 替 变 换 ? 你的代码思路正确,但存在一个小问题:在判断 `b.cget("image")` 时,直接比较两个 PhotoImage 对象的地址,即使图片相同也会返回 False,导致切换逻辑失效。建议改用布尔变量记录当前图片状态,示例如下:from tkinter import *
root = Tk()
m = PhotoImage(file="e:/A.png") # 注意路径写法
n = PhotoImage(file="e:/B.png")
b = Button(root, relief="ridge", borderwidth=11)
b.pack()
# 初始显示图片A
b.config(image=m)
state = True # True表示当前是A
def a():
global state
if state: # 当前是A则换B
b.config(image=n)
state = False
else: # 当前是B则换A
b.config(image=m)
state = True
b.after(3000, a) # 3秒后再次切换
a()
mainloop()这样每3秒按钮图片就会在A与B之间交替变换。你也可以把切换触发到鼠标点击事件上(例如绑定 <Button-1>),只需将 b.after(3000, a) 改为不自动调用即可。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 你可以在a()调用的地方嵌套一个while循环,然后每while一次就sleep()一定时间
from tkinter import *
root=Tk()
m=PhotoImage(file="e://A.png")
n=PhotoImage(file="e://B.png")
b=Button(root,
relief="ridge",
borderwidth=11)
b.pack()
def a():
if b.cget("image") == m :
b.config(image=n)
else :
b.config(image=m)
b.after(3000,a)
while 1:
a()
sleep(2000)
mainloop()
大概是这样吧太久没写python了 学习编程中的Ben 发表于 2026-5-4 21:01
你可以在a()调用的地方嵌套一个while循环,然后每while一次就sleep()一定时间
大概是这样吧太久没写pytho ...
您写的程序,不行呀!
页:
[1]