根据之前的图像更新按钮的图像

Posted

技术标签:

【中文标题】根据之前的图像更新按钮的图像【英文标题】:Update image of a button depending on its previous image 【发布时间】:2017-01-09 05:01:12 【问题描述】:

我正在尝试在 Tkinter (Python) 中编写一个开始/暂停按钮,但以下代码不起作用:

def startpause():
 if startpause_button.cget('image')=='start_image':
  startpause_button.config(image=pause_image)
 else:
  startpause_button.config(image=start_image)
return

start_image=ImageTk.PhotoImage(file='start.png')
pause_image=ImageTk.PhotoImage(file='pause.png')
   
startpause_button=ttk.Button(frame,image=start_image,command = startpause)

我知道问题是关于 cget(它返回 ('pyimage3'), )以及它返回的内容,但我不知道应该将什么作为值来检查 ("('pyimage3')," 不工作)。

你对这个问题有什么想法吗?

谢谢。

【问题讨论】:

尝试将其与您的 start_image 进行比较,而不是字符串 'start_image' 【参考方案1】:

startpause_button.cget('image')'start_image' 是两个不同的东西,.cget('image') 在列表中返回图像的名称,例如('pyimage1',)。这意味着要将它们与[0] 进行比较,您需要将其从列表中删除,并确保两个变量都是带有str() 的字符串,因为'pyimage1'pyimage1 也是两个不同的东西

import tkinter.ttk
from tkinter import Tk, PhotoImage

def startpause():
    global start_image
    if str(startpause_button.cget('image')[0])==str(start_image):
        startpause_button.config(image=pause_image)
    else:
        startpause_button.config(image=start_image)
    #return # i dont think you need this

global start_image
start_image=PhotoImage(file='start.gif')
pause_image=PhotoImage(file='pause.gif')

startpause_button=tkinter.ttk.Button(frame,image=start_image,command = startpause)

这确实有效,我已经对其进行了测试,希望对您有所帮助! :)

【讨论】:

以上是关于根据之前的图像更新按钮的图像的主要内容,如果未能解决你的问题,请参考以下文章

根据控件状态更改按钮的图像

如何根据文本长度或背景图像调整按钮宽度

根据屏幕大小缩放图像按钮

如何根据屏幕大小调整按钮的图像和文本大小(自动布局)

IOS SWIFT-基于uibutton图像的调用代码块

如何根据contentHeight不断更新图像?